<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SDK14: Undefined symbol sdh_req_observers$$Base</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/25532/sdk14-undefined-symbol-sdh_req_observers-base</link><description>I am currently porting my project from SDK13.0 to 14.0 so I can use s332 v5.0.0. 
 I receive warnings when compiling 
 .\_build\nrf52_firmware.axf: Warning: L6330W: Undefined symbol sdh_req_observers$$Base (referred from nrf_sdh.o). Unused section has</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 05 Oct 2017 02:24:30 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/25532/sdk14-undefined-symbol-sdh_req_observers-base" /><item><title>RE: SDK14: Undefined symbol sdh_req_observers$$Base</title><link>https://devzone.nordicsemi.com/thread/100666?ContentTypeID=1</link><pubDate>Thu, 05 Oct 2017 02:24:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bbf69b4b-b087-43c7-9089-ab40cb7cc6e3</guid><dc:creator>goldwake</dc:creator><description>&lt;p&gt;This solved it. Thank you&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK14: Undefined symbol sdh_req_observers$$Base</title><link>https://devzone.nordicsemi.com/thread/100665?ContentTypeID=1</link><pubDate>Wed, 04 Oct 2017 08:25:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:da5a08e2-73a7-49dc-a8a7-a1d6a21058e9</guid><dc:creator>Chris Uroda</dc:creator><description>&lt;p&gt;Hi goldwake,&lt;/p&gt;
&lt;p&gt;I have been having the same issue as you I think.  Ultimately some of the linker warnings can be ignored (for any observer sets that are not being used by your code), but, if the sections and section references aren&amp;#39;t being linked correctly, then ignoring them will be ignoring a real problem.&lt;/p&gt;
&lt;p&gt;For me, I was getting the same linker warnings you were, e.g.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Undefined symbol sdh_ble_observers$$Base
Undefined symbol sdh_ble_observers$$Limit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;if you remove the --diag_suppress 6330 and compile one of the SDK examples, e.g. examples\ble_peripheral\ble_app_hrs\pca10040\s132\arm5_no_packs&lt;/p&gt;
&lt;p&gt;you can see that the linker warnigns are different:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.\_build\nrf52832_xxaa.axf: Warning: L6330W: Undefined symbol sdh_req_observers1$$Base (referred from nrf_sdh.o). Unused section has been removed.
.\_build\nrf52832_xxaa.axf: Warning: L6330W: Undefined symbol sdh_req_observers1$$Limit (referred from nrf_sdh.o). Unused section has been removed.
.\_build\nrf52832_xxaa.axf: Warning: L6330W: Undefined symbol sdh_stack_observers1$$Base (referred from nrf_sdh.o). Unused section has been removed.
.\_build\nrf52832_xxaa.axf: Warning: L6330W: Undefined symbol sdh_stack_observers1$$Limit (referred from nrf_sdh.o). Unused section has been removed.
.\_build\nrf52832_xxaa.axf: Warning: L6330W: Undefined symbol sdh_state_observers1$$Base (referred from nrf_sdh.o). Unused section has been removed.
.\_build\nrf52832_xxaa.axf: Warning: L6330W: Undefined symbol sdh_state_observers1$$Limit (referred from nrf_sdh.o). Unused section has been removed.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;you can see that the section names always have a 1 suffix, and the observers that are actually used are not generating warnings.&lt;/p&gt;
&lt;p&gt;For me, the issue was having --gnu specified in the &amp;quot;Misc Controls&amp;quot; textbox in C/C++ tab.  Removing that seems to have corrected the underlying issue for me, and now only unused observer sets generate the linker warnings.&lt;/p&gt;
&lt;p&gt;Hope that might help someone!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK14: Undefined symbol sdh_req_observers$$Base</title><link>https://devzone.nordicsemi.com/thread/100664?ContentTypeID=1</link><pubDate>Sun, 01 Oct 2017 20:56:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9a62f2a8-31dd-47fb-ab21-20bced711e4a</guid><dc:creator>goldwake</dc:creator><description>&lt;p&gt;Thanks for the info, I haven&amp;#39;t got a fix for armcc yet. All of the examples i&amp;#39;ve checked suppress the warning in the linker tab of project options by using&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--diag_suppress 6330
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If i remove that, I get similar warnings.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK14: Undefined symbol sdh_req_observers$$Base</title><link>https://devzone.nordicsemi.com/thread/100663?ContentTypeID=1</link><pubDate>Thu, 28 Sep 2017 21:38:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:28a4d2f1-7638-461f-a181-34159f987457</guid><dc:creator>wael</dc:creator><description>&lt;p&gt;Hi goldwake,&lt;/p&gt;
&lt;p&gt;I just faced a similar problem yesterday when upgrading to SDK14 but I am using the GNU ARM GCC toolchain. The problem was that the &lt;code&gt;NRF_SDH_BLE_OBSERVER&lt;/code&gt; macro is declaring variables as extern. So these variables need to be defined in the linker script for the symbols to be recognized.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m not sure what the syntax is for the toolchain you&amp;#39;re using but this is what I had to add to my linker script (&lt;code&gt;gcc_nrf52.ld&lt;/code&gt;) to fix this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  .sdh_stack_observers :
  {
    PROVIDE(__start_sdh_stack_observers = .);
    KEEP(*(SORT(.sdh_stack_observers*)))
    PROVIDE(__stop_sdh_stack_observers = .);
  } &amp;gt; FLASH

  .sdh_req_observers :
  {
    PROVIDE(__start_sdh_req_observers = .);
    KEEP(*(SORT(.sdh_req_observers*)))
    PROVIDE(__stop_sdh_req_observers = .);
  } &amp;gt; FLASH

  .sdh_ant_observers :
  {
    PROVIDE(__start_sdh_ant_observers = .);
    KEEP(*(SORT(.sdh_ant_observers*)))
    PROVIDE(__stop_sdh_ant_observers = .);
  } &amp;gt; FLASH

  .sdh_state_observers :
  {
    PROVIDE(__start_sdh_state_observers = .);
    KEEP(*(SORT(.sdh_state_observers*)))
    PROVIDE(__stop_sdh_state_observers = .);
  } &amp;gt; FLASH

  .sdh_ble_observers :
  {
    PROVIDE(__start_sdh_ble_observers = .);
    KEEP(*(SORT(.sdh_ble_observers*)))
    PROVIDE(__stop_sdh_ble_observers = .);
  } &amp;gt; FLASH

  .sdh_soc_observers :
  {
    PROVIDE(__start_sdh_soc_observers = .);
    KEEP(*(SORT(.sdh_soc_observers*)))
    PROVIDE(__stop_sdh_soc_observers = .);
  } &amp;gt; FLASH
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hope this helps!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>