{"id":3879,"date":"2021-08-25T15:07:15","date_gmt":"2021-08-25T15:07:15","guid":{"rendered":"https:\/\/nenadnoveljic.com\/blog\/?p=3879"},"modified":"2022-09-28T12:01:25","modified_gmt":"2022-09-28T12:01:25","slug":"warnings-when-linking-oracle-software","status":"publish","type":"post","link":"https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/","title":{"rendered":"Warnings When Linking Oracle Software"},"content":{"rendered":"<p>The following warnings are usual when linking Oracle database software on Solaris:<\/p>\n<pre><code>ld: warning: mapfile: text segment: section '.text%<span style=\"color:red\">rwssid<\/span>' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kdimod0' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kss_set_proc' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kturrur' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kturru' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kcbism' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kssocbg' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kkoadsTimeLimitFromSrc' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%dbglWriteLogMsgtoDisk' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%qosdGetTb4Find' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kkorrio' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%ztcrbp' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%ztcrbh' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kdmrExeKtsjTask' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kokl_pdbaware_kdlf_copy' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kkeapr' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kkjex1s' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kkjcjchk' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kudmrOpenCBK' does not appear in any input file\nld: warning: mapfile: text segment: section '.text%kssdmp1' does not appear in any input file<\/code><\/pre>\n<p>In this article I&#8217;ll explain their origin and why they can normally be safely ignored.<\/p>\n<p>The linker complained that it couldn&#8217;t find a section, i.e. function, in any of the input objects files.<\/p>\n<p>For example, the function <span style=\"color:red\">rwssid<\/span> indeed isn&#8217;t contained in the oracle 19c binary:<\/p>\n<pre><code>nm \/u00\/oracle\/orabase\/product\/19.12.0.0.210720_a\/bin\/oracle | grep <span style=\"color:red\">rwssid<\/span><\/code><\/pre>\n<p>But where does the linker get the idea about non-existing functions?<\/p>\n<p>They are configured in the mapfile \/u00\/oracle\/orabase\/product\/19.12.0.0.210720_a\/rdbms\/lib\/<span style=\"color:blue\">oracle.map<\/span>:<\/p>\n<pre><code>grep rwssid $ORACLE_HOME\/rdbms\/lib\/<span style=\"color:blue\">oracle.map<\/span>\ntext: .text%<span style=\"color:red\">rwssid<\/span>;<\/code><\/pre>\n<p>The <span style=\"color:blue\">oracle.map<\/span> is specified as a mapfile when linking the oracle executable:<\/p>\n<pre><code>\/usr\/ccs\/bin\/ld   -o \/u00\/oracle\/orabase\/product\/19.12.0.0.210720_a\/rdbms\/lib\/oracle ... -M \/u00\/oracle\/orabase\/product\/19.12.0.0.210720_a\/rdbms\/lib\/<span style=\"color:blue\">oracle.map<\/span> ...<\/code><\/pre>\n<p>Let&#8217;s inspect the mapfile:<\/p>\n<pre><code>text = LOAD ?RX<span style=\"color:brown\">O<\/span>;\ntext: .text%main;\ntext: .text%ssthrdmain;\ntext: .text%opimai_real;\ntext: .text%sou2o;\ntext: .text%opidrv;\ntext: .text%opiodr;\ntext: .text%opiino;\ntext: .text%opitsk;\ntext: .text%ttcpip;\ntext: .text%opiexe;\ntext: .text%kkxexe;\ntext: .text%peicnt;\ntext: .text%plsql_run;\ntext: .text%pfrrun;\ntext: .text%pfrrun_no_tool;\n...<\/code><\/pre>\n<p>The first declaration LOAD ?RX<span style=\"color:brown\">O<\/span> tells the linker how to create the output file. RX specifies executable and readable output file. The ?<span style=\"color:brown\">O<\/span> flag forces the ordering of the functions as specified later in the mapfile. Without this flag, the functions in the binary file would have been ordered as they appear in the source file.<\/p>\n<p>We can see that the functions in the executable are indeed sorted according to the mapfile:<\/p>\n<pre><code>nm -vP oracle\n\n...\nmain       T          627eef0               b8\nssthrdmain  T          627efc0              65a\nopimai_real  T          627f630              221\nsou2o      T          627f870              108\nopidrv     T          627f990              930\nopiodr     T          62802d0             40a7\nopiino     T          6284390              f4c\nopitsk     T          62852f0             4a24\nttcpip     T          6289d30             4790\nopiexe     T          628e4d0             ef68\nkkxexe     T          629d450             10ec\npeicnt     T          629e550             115b\nplsql_run  T          629f6c0             1454\npfrrun     T          62a0b30             2778\npfrrun_no_tool  t          62a32c0               71\n...<\/code><\/pre>\n<p>( -v flag prevents sorting by function names; -P generates a less verbose output.)<\/p>\n<p>But why are non-existing functions specified in the mapfile?<\/p>\n<p>Those functions used to exist in previous releases, but developers forgot to update the mapfile after they removed them.<\/p>\n<p>For example, the function <span style=\"color:red\">rwssid<\/span> disappeared somewhere between releases 12.2 and 19c:<\/p>\n<pre><code>nm -P \/u00\/oracle\/orabase\/product\/12.2.0.1.180116_b\/bin\/oracle | grep <span style=\"color:red\">rwssid<\/span>\n<span style=\"color:red\">rwssid<\/span>     T          99b2bb0               32<\/code><\/pre>\n<p>The oracle binary is intact &#8211; such warnings can be safely ignored.<\/p>\n<h1>Updates<\/h1>\n<h2>September 25, 2021<\/h2>\n<p>The article elicited <a href=\"https:\/\/twitter.com\/NenadNoveljic\/status\/1430547513057107976\">an interesting discussion on Twitter<\/a>.<\/p>\n<p>Find the main points below.<\/p>\n<h3>Reason<\/h3>\n<p><a href=\"https:\/\/twitter.com\/fritshoogland\/status\/1430586832073412608\">Frits Hoogland suggested<\/a> that the ordering might be an optimization technique to keep jumps shorter.<\/p>\n<p>Indeed, more generic functions, like main, ssthrdmain, opimai_real, sou2o, opi*, etc., that are generally executed less frequently and appear higher up on the stack, come first.<\/p>\n<p><a href=\"https:\/\/twitter.com\/RogerMacNicol\">Roger MacNicol<\/a> confirmed that the purpose of ordering is to reduce cache and iTLB misses.<\/p>\n<h3>Linux<\/h3>\n<p>Interestingly, there&#8217;s isn&#8217;t such ordering on Linux:<\/p>\n<pre><code>nm -vP oracle &gt; \/tmp\/nm.out\n...\nmain T 0000000000db77c0 0000000000000130\nopimai_real T 0000000000db78f0 00000000000001c0\nopimai_init t 0000000000db7ab0 0000000000000500\nkudmiini T 0000000000db7fc0 0000000000000580\nkudmiparms T 0000000000db8540 0000000000001ac0\nkudmnli t 0000000000dba000 0000000000000580\nkudmgrf t 0000000000dba580 0000000000000ef0\nkudmgfa t 0000000000dbb470 0000000000000220\nkudmgfl t 0000000000dbb690 00000000000022d0\nkudmignme T 0000000000dbd960 0000000000000040\nkudmgds t 0000000000dbd9a0 00000000000003e0\nkudmppcval t 0000000000dbdd90 0000000000000030\nkudmppcste t 0000000000dbddc0 0000000000000040\nkudmppparse T 0000000000dbde00 0000000000000350\nkudmppz t 0000000000dbe150 0000000000000030\nkudmppk t 0000000000dbe180 0000000000000290\n...<\/code><\/pre>\n<h1>References<\/h1>\n<p><a href=\"https:\/\/docs.oracle.com\/cd\/E26502_01\/html\/E26507\/chapter7-3.html#scrolltoc\">Oracle Solaris 11.1 Linkers and Libraries Guide<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Obsolete entries in oracle.map generate warnings that can be safely ignored. <a href=\"https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/\" class=\"more-link\">Continue Reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[58,5,14],"tags":[],"class_list":["post-3879","post","type-post","status-publish","format-standard","hentry","category-linker","category-oracle","category-solaris"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Warnings When Linking Oracle Software - All-round Database Topics<\/title>\n<meta name=\"description\" content=\"Obsolete entries in oracle.map generate warnings that can be safely ignored.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Warnings When Linking Oracle Software - All-round Database Topics\" \/>\n<meta property=\"og:description\" content=\"Obsolete entries in oracle.map generate warnings that can be safely ignored.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/\" \/>\n<meta property=\"og:site_name\" content=\"All-round Database Topics\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-25T15:07:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-28T12:01:25+00:00\" \/>\n<meta name=\"author\" content=\"Nenad Noveljic\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@NenadNoveljic\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nenad Noveljic\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/warnings-when-linking-oracle-software\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/warnings-when-linking-oracle-software\\\/\"},\"author\":{\"name\":\"Nenad Noveljic\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/#\\\/schema\\\/person\\\/51458d9dd86dbbdd19f5add451d44efa\"},\"headline\":\"Warnings When Linking Oracle Software\",\"datePublished\":\"2021-08-25T15:07:15+00:00\",\"dateModified\":\"2022-09-28T12:01:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/warnings-when-linking-oracle-software\\\/\"},\"wordCount\":338,\"commentCount\":0,\"articleSection\":[\"linker\",\"Oracle\",\"Solaris\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/warnings-when-linking-oracle-software\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/warnings-when-linking-oracle-software\\\/\",\"url\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/warnings-when-linking-oracle-software\\\/\",\"name\":\"Warnings When Linking Oracle Software - All-round Database Topics\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/#website\"},\"datePublished\":\"2021-08-25T15:07:15+00:00\",\"dateModified\":\"2022-09-28T12:01:25+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/#\\\/schema\\\/person\\\/51458d9dd86dbbdd19f5add451d44efa\"},\"description\":\"Obsolete entries in oracle.map generate warnings that can be safely ignored.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/warnings-when-linking-oracle-software\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/warnings-when-linking-oracle-software\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/warnings-when-linking-oracle-software\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Warnings When Linking Oracle Software\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/\",\"name\":\"All-round Database Topics\",\"description\":\"Nenad Noveljic\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/#\\\/schema\\\/person\\\/51458d9dd86dbbdd19f5add451d44efa\",\"name\":\"Nenad Noveljic\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a97b796613ea48ec8a7b79c8ffe1c685dcffc920c68121f6238d5caab5070670?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a97b796613ea48ec8a7b79c8ffe1c685dcffc920c68121f6238d5caab5070670?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a97b796613ea48ec8a7b79c8ffe1c685dcffc920c68121f6238d5caab5070670?s=96&d=mm&r=g\",\"caption\":\"Nenad Noveljic\"},\"sameAs\":[\"nenad-noveljic-9b746a6\",\"https:\\\/\\\/x.com\\\/NenadNoveljic\"],\"url\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/author\\\/nenad\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Warnings When Linking Oracle Software - All-round Database Topics","description":"Obsolete entries in oracle.map generate warnings that can be safely ignored.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/","og_locale":"en_US","og_type":"article","og_title":"Warnings When Linking Oracle Software - All-round Database Topics","og_description":"Obsolete entries in oracle.map generate warnings that can be safely ignored.","og_url":"https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/","og_site_name":"All-round Database Topics","article_published_time":"2021-08-25T15:07:15+00:00","article_modified_time":"2022-09-28T12:01:25+00:00","author":"Nenad Noveljic","twitter_card":"summary_large_image","twitter_creator":"@NenadNoveljic","twitter_misc":{"Written by":"Nenad Noveljic","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/#article","isPartOf":{"@id":"https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/"},"author":{"name":"Nenad Noveljic","@id":"https:\/\/nenadnoveljic.com\/blog\/#\/schema\/person\/51458d9dd86dbbdd19f5add451d44efa"},"headline":"Warnings When Linking Oracle Software","datePublished":"2021-08-25T15:07:15+00:00","dateModified":"2022-09-28T12:01:25+00:00","mainEntityOfPage":{"@id":"https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/"},"wordCount":338,"commentCount":0,"articleSection":["linker","Oracle","Solaris"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/","url":"https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/","name":"Warnings When Linking Oracle Software - All-round Database Topics","isPartOf":{"@id":"https:\/\/nenadnoveljic.com\/blog\/#website"},"datePublished":"2021-08-25T15:07:15+00:00","dateModified":"2022-09-28T12:01:25+00:00","author":{"@id":"https:\/\/nenadnoveljic.com\/blog\/#\/schema\/person\/51458d9dd86dbbdd19f5add451d44efa"},"description":"Obsolete entries in oracle.map generate warnings that can be safely ignored.","breadcrumb":{"@id":"https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/nenadnoveljic.com\/blog\/warnings-when-linking-oracle-software\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nenadnoveljic.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Warnings When Linking Oracle Software"}]},{"@type":"WebSite","@id":"https:\/\/nenadnoveljic.com\/blog\/#website","url":"https:\/\/nenadnoveljic.com\/blog\/","name":"All-round Database Topics","description":"Nenad Noveljic","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nenadnoveljic.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/nenadnoveljic.com\/blog\/#\/schema\/person\/51458d9dd86dbbdd19f5add451d44efa","name":"Nenad Noveljic","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a97b796613ea48ec8a7b79c8ffe1c685dcffc920c68121f6238d5caab5070670?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a97b796613ea48ec8a7b79c8ffe1c685dcffc920c68121f6238d5caab5070670?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a97b796613ea48ec8a7b79c8ffe1c685dcffc920c68121f6238d5caab5070670?s=96&d=mm&r=g","caption":"Nenad Noveljic"},"sameAs":["nenad-noveljic-9b746a6","https:\/\/x.com\/NenadNoveljic"],"url":"https:\/\/nenadnoveljic.com\/blog\/author\/nenad\/"}]}},"_links":{"self":[{"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/posts\/3879","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/comments?post=3879"}],"version-history":[{"count":1,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/posts\/3879\/revisions"}],"predecessor-version":[{"id":3889,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/posts\/3879\/revisions\/3889"}],"wp:attachment":[{"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/media?parent=3879"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/categories?post=3879"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/tags?post=3879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}