Please login or register. October 22, 2018, 04:05:29 PM

Author Topic: AIX Undefined symbol: .__register_frame_info_table  (Read 3543 times)

0 Members and 1 Guest are viewing this topic.

Michael

  • Administrator
  • Hero Member
  • *****
  • Posts: 1090
  • Karma: +0/-0
AIX Undefined symbol: .__register_frame_info_table
« on: December 07, 2015, 04:19:02 PM »
When building on AIX I got the message:
ld: 0711-317 ERROR: Undefined symbol: .__register_frame_info_table
ld: 0711-317 ERROR: Undefined symbol: .__deregister_frame_info
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
collect2: error: ld returned 8 exit status


-bnoquiet does not reveal much more in this case: -but maybe just enough...

(ld): setopt 64
(ld): halt 4
(ld): setopt r/o->w
(ld): setopt nodelcsect
(ld): setfflag 4
(ld): savename libR.so
(ld): filelist 255 3
(ld): setopt noprogram
(ld): noentry
NOENTRY: There is no entry point.
(ld): i CommandLineArgs.o
(ld): i /tmp//ccObHQPV.o
(ld): i Rdynload.o
... lots and lots of additional .o files
(ld): i ../unix/system.o
(ld): i ../extra/zlib/libz.a
(ld): i ../extra/bzip2/libbz2.a
(ld): i ../extra/pcre/libpcre.a
(ld): i ../extra/tre/libtre.a
(ld): i ../extra/xz/liblzma.a
(ld): lib /opt/lib/libgfortran.a
(ld): lib /usr/lib/libm.a
(ld): i /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/ppc64/libgcc.a
(ld): i /opt/lib/libintl.a
(ld): i /opt/lib/libiconv.a
(ld): lib /usr/lib/libpthread.a
(ld): lib /usr/lib/libc.a
(ld): lib /usr/lib/librt.a
(ld): lib /usr/lib/libdl.a
(ld): lib /opt/lib/libgcc_s.a
LIBRARY: Shared object /opt/lib/libintl.a[libintl.so.8]: 58 symbols imported.
LIBRARY: Shared object /opt/lib/libiconv.a[libiconv.so.2]: 13 symbols imported.
LIBRARY: Shared object libpthread.a[shr_xpg5_64.o]: 332 symbols imported.
LIBRARY: Shared object libc.a[shr_64.o]: 2668 symbols imported.
LIBRARY: Shared object libc.a[posix_aio_64.o]: 20 symbols imported.
LIBRARY: Shared object libc.a[aio_64.o]: 18 symbols imported.
LIBRARY: Shared object libc.a[pse_64.o]: 5 symbols imported.
LIBRARY: Shared object libc.a[dl_64.o]: 4 symbols imported.
LIBRARY: Shared object libc.a[pty_64.o]: 1 symbols imported.
LIBRARY: Shared object librt.a[posix_aio_64.o]: 7 symbols imported.
LIBRARY: Shared object libdl.a[shr_64.o]: 4 symbols imported.
FILELIST: Number of previously inserted files processed: 255
(ld): exports ../../etc/R.exp
EXPORTS: Symbols exported: 1903
(ld): exports /tmp//ccD159WP.x
EXPORTS: Symbols exported: 0
(ld): initfini _GLOBAL__FI_libR_so _GLOBAL__FD_libR_so
(ld): resolve
RESOLVE: 6457 of 17071 symbols were kept.
(ld): addgl /usr/lib/glink64.o
ADDGL: Glink code added for 203 symbols.
(ld): er full
ld: 0711-318 ERROR: Undefined symbols were found.
        The following symbols are in error:
 Symbol                    Inpndx  TY CL Source-File(Object-File) OR Import-File{Shared-object}
                              RLD: Address  Section  Rld-type Referencing Symbol
 ----------------------------------------------------------------------------------------------
 .__register_frame_info_table [14]    ER PR /tmp//ccZBadC1.c(/tmp//ccObHQPV.o)
                                   0000001c .text    R_RBR    [20]    <.reg_frame>
 .__deregister_frame_info  [16]    ER PR /tmp//ccZBadC1.c(/tmp//ccObHQPV.o)
                                   0000006c .text    R_RBR    [22]    <.dereg_frame>
ER: The return code is 8.
ld: 0711-317 ERROR: Undefined symbol: .__register_frame_info_table
ld: 0711-317 ERROR: Undefined symbol: .__deregister_frame_info
collect2: error: ld returned 8 exit status


* key here - I think - is that I am linking in 64-bit mode (I am guessing that is what "setopt 64" is 'reminding me)

* the files requesting the missing symbols are coming from the compiler itself (two files in /tmp)

Searching for the symbols in 32-bit mode shows:


root@x065:[/data/prj/cran/64/R/src/main]nm -X32 -AC /opt/lib/*.a | grep  __register_frame_info_table                         
/opt/lib/libgcc_s.a[shr.o]: !__register_frame_info_table:F-11 -           0
/opt/lib/libgcc_s.a[shr.o]: .__register_frame_info_table T   268465580         112
/opt/lib/libgcc_s.a[shr.o]: .__register_frame_info_table_bases T   268465468         112
/opt/lib/libgcc_s.a[shr.o]: __register_frame_info_table D   536875268
/opt/lib/libgcc_s.a[shr.o]: __register_frame_info_table d   536875268          12
/opt/lib/libgcc_s.a[shr.o]: __register_frame_info_table_bases D   536876744
/opt/lib/libgcc_s.a[shr.o]: __register_frame_info_table_bases d   536876744          12
/opt/lib/libstdc++.a[libstdc++.so.6]: .__register_frame_info_table T   269101132
/opt/lib/libstdc++.a[libstdc++.so.6]: .__register_frame_info_table t   269101132          40
/opt/lib/libstdc++.a[libstdc++.so.6]: __register_frame_info_table U           -
/opt/lib/libstdc++.a[libstdc++.so.6]: __register_frame_info_table d   537080272           4


Searching for the symbols in 64-bit mode shows:
nm -X64 -AC /opt/lib/*.a | grep  __register_frame_info_table

More to the point - there is no 64-bit run-time linkage for shared libraries (more to follow I guess), because:

root@x065:[/data/prj/cran/64/R/src/main]ls -l /opt/lib/libgc*
-rw-r--r--   1 root     system       919830 Apr 16 2015  /opt/lib/libgcc_s.a
root@x065:[/data/prj/cran/64/R/src/main]nm -X64 -AC /opt/lib/libgc*.a | wc -l
       0


Michael

  • Administrator
  • Hero Member
  • *****
  • Posts: 1090
  • Karma: +0/-0
Re: AIX Undefined symbol: .__register_frame_info_table
« Reply #1 on: December 09, 2015, 08:56:22 AM »
My basic suspicion is correct - it is not finding the 64-bit objects. When I add a -L directive to search (first) in a directory with 64-bit members (in this case -L /opt/lib/ppc64) the messages go away.

Now I just have to figure out why the ./configure script was not setting up the correct directory (directories).