[PATCH 1/3] sim: split sim/callback.h include out

Mike Frysinger vapier@gentoo.org
Sun Jun 20 20:56:08 GMT 2021


On 20 Jun 2021 11:11, Simon Marchi wrote:
> On 2021-06-16 2:33 a.m., Mike Frysinger via Gdb-patches wrote:
> > The sim-basics.h is too big and includes too many things.  This leads
> > to some arch's sim-main.h having circular loop issues with defs, and
> > makes it hard to separate out common objects from arch-specific defs.
> > By splitting up sim-basics.h and killing off sim-main.h, it'll make
> > it easier to separate out the two.
> > 
> > Start with splitting out sim/callback.h.
> 
> Starting with this patch (according to bisect), I get this link error:

bisecting is why i've been doing small/medium patches and not giant dumps :).

> make[3]: Entering directory '/home/simark/build/binutils-gdb/sim/erc32'
> ccache gcc -DHAVE_CONFIG_H     -DWITH_HW=1 -DHAVE_DV_SOCKSER -DDEFAULT_INLINE=0   -Wall -Wdeclaration-after-statement -Wpointer-arith -Wpointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wmissing-prototypes -Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type -Wold-style-declaration   -I. -I/home/simark/src/binutils-gdb/sim/erc32 -I../common -I/home/simark/src/binutils-gdb/sim/erc32/../common -I../../include -I/home/simark/src/binutils-gdb/sim/erc32/../../include -I../../bfd -I/home/simark/src/binutils-gdb/sim/erc32/../../bfd -I../../opcodes -I/home/simark/src/binutils-gdb/sim/erc32/../../opcodes -I../..  -I/home/simark/src/binutils-gdb/sim/erc32/../../gnulib/import -I../../gnulib/import  -DFAST_UART -I/home/simark/src/binutils-gdb/sim/erc32/../.. -g3 -O0 -fsanitize=address -fmax-errors=1 -fdiagnostics-color=always   -o sis \
>   sis.o exec.o erc32.o func.o help.o float.o ../common/common_libcommon_a-portability.o ../common/common_libcommon_a-sim-load.o ../common/common_libcommon_a-version.o ../../bfd/libbfd.a ../../opcodes/libopcodes.a  ../../libiberty/libiberty.a -lm -ltinfo -ldl -lnsl  -lz -lreadline -ltinfo -lm  ../../gnulib/import/libgnu.a 
> /usr/bin/ld: ../common/common_libcommon_a-sim-load.o: warning: relocation against `current_target_byte_order' in read-only section `.text'
> /usr/bin/ld: ../common/common_libcommon_a-sim-load.o: in function `LSEXTRACTED':
> /home/simark/src/binutils-gdb/sim/common/sim-bits.c:64: undefined reference to `sim_io_error'

this is weird.  it builds fine for me with -O0.  i just tried with sanitizers
enabled too and still passes.  all with gcc-11.1.

but let's focus on the error.

LSEXTRACTED doesn't call sim_io_error.  it does call the ASSERT macro which
might expand to calling sim_io_error, but that includes sim-io.h before using
the func.  so that part looks ok.

sim_io_error is defined in sim-io.o.  but erc32 doesn't link that in.  but it
also doesn't use it in general ...

why does your sim-load have references to LSEXTRACTED et al in the first place ?
sim-load doesn't use any of those APIs.  i guess this gets back to your system
not handling static/inline the way others are for some reason ?

$ readelf -sW common/common_libcommon_a-sim-load.o  | grep sim
  1: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS sim-load.c
 17: 0000000000000127   990 FUNC    GLOBAL DEFAULT    1 sim_load_file
-mike


More information about the Gdb-patches mailing list