libunwind-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Libunwind-devel] LTO and dwarf_to_unw_regnum_map


From: Dilyan Palauzov
Subject: Re: [Libunwind-devel] LTO and dwarf_to_unw_regnum_map
Date: Mon, 06 Jul 2015 20:14:45 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.7.0

ello,

when consulting the output from the preprocessor, in
dwarf/Lfind_proc_info-lsb.i I have extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17], and in x86_64/Lglobal.i is is
extern const uint8_t _ULx86_64_dwarf_to_unw_regnum_map[33]; .

33 != 17

When adding -E to CFLAGS I get

address@hidden:/home/didopalauzov/git/libunwind master=# grep -r
_ULx86_64_dwarf_to_unw_regnum_map

src/dwarf/Lfde.o:extern const uint8_t _ULx86_64_dwarf_to_unw_regnum_map[17];
src/dwarf/Lfind_proc_info-lsb.o:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17];
src/dwarf/Lparser.o:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17];
src/dwarf/Lparser.o:    *locp = (((dwarf_loc_t) { .val = ((unw_word_t)
_ULx86_64_r_uc_addr(dwarf_get_uc(c), ((((val) < 17) ?
_ULx86_64_dwarf_to_unw_regnum_map[val] : 0)))), .type = (0) }));
src/dwarf/Lparser.o:          regnum = (((rs->reg[17].val) < 17) ?
_ULx86_64_dwarf_to_unw_regnum_map[rs->reg[17].val] : 0);
src/dwarf/Lparser.o:          c->loc[i] = (((dwarf_loc_t) { .val =
((unw_word_t) _ULx86_64_r_uc_addr(dwarf_get_uc(c), ((((rs->reg[i].val) <
17) ? _ULx86_64_dwarf_to_unw_regnum_map[rs->reg[i].val] : 0)))), .type =
(0) }));
src/dwarf/.libs/Lfde.o:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17];
src/dwarf/.libs/Lfind_proc_info-lsb.o:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17];
src/dwarf/.libs/Lparser.o:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17];
src/dwarf/.libs/Lparser.o:    *locp = (((dwarf_loc_t) { .val =
((unw_word_t) _ULx86_64_r_uc_addr(dwarf_get_uc(c), ((((val) < 17) ?
_ULx86_64_dwarf_to_unw_regnum_map[val] : 0)))), .type = (0) }));
src/dwarf/.libs/Lparser.o:          regnum = (((rs->reg[17].val) < 17) ?
_ULx86_64_dwarf_to_unw_regnum_map[rs->reg[17].val] : 0);
src/dwarf/.libs/Lparser.o:          c->loc[i] = (((dwarf_loc_t) { .val =
((unw_word_t) _ULx86_64_r_uc_addr(dwarf_get_uc(c), ((((rs->reg[i].val) <
17) ? _ULx86_64_dwarf_to_unw_regnum_map[rs->reg[i].val] : 0)))), .type =
(0) }));
src/dwarf/.libs/Lexpr.o:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17];
src/dwarf/.libs/Lexpr.o:                                  (((opcode -
DW_OP_breg0) < 17) ? _ULx86_64_dwarf_to_unw_regnum_map[opcode -
DW_OP_breg0] : 0),
src/dwarf/.libs/Lexpr.o:                                  (((operand1) <
17) ? _ULx86_64_dwarf_to_unw_regnum_map[operand1] : 0), &tmp1)) < 0)
src/dwarf/.libs/Lexpr.o:          *valp = (((opcode - DW_OP_reg0) < 17)
? _ULx86_64_dwarf_to_unw_regnum_map[opcode - DW_OP_reg0] : 0);
src/dwarf/.libs/Lexpr.o:          *valp = (((operand1) < 17) ?
_ULx86_64_dwarf_to_unw_regnum_map[operand1] : 0);
src/dwarf/.libs/Lfind_unwind_table.o:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[33];
src/dwarf/.libs/Lpe.o:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17];
src/dwarf/Lexpr.o:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17];
src/dwarf/Lexpr.o:                                  (((opcode -
DW_OP_breg0) < 17) ? _ULx86_64_dwarf_to_unw_regnum_map[opcode -
DW_OP_breg0] : 0),
src/dwarf/Lexpr.o:                                  (((operand1) < 17) ?
_ULx86_64_dwarf_to_unw_regnum_map[operand1] : 0), &tmp1)) < 0)
src/dwarf/Lexpr.o:          *valp = (((opcode - DW_OP_reg0) < 17) ?
_ULx86_64_dwarf_to_unw_regnum_map[opcode - DW_OP_reg0] : 0);
src/dwarf/Lexpr.o:          *valp = (((operand1) < 17) ?
_ULx86_64_dwarf_to_unw_regnum_map[operand1] : 0);
src/dwarf/Lfind_unwind_table.o:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[33];
src/dwarf/Lpe.o:extern const uint8_t _ULx86_64_dwarf_to_unw_regnum_map[17];
src/.libs/libunwind-dwarf-local.a:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17];
src/.libs/libunwind-dwarf-local.a:
(((opcode - DW_OP_breg0) < 17) ?
_ULx86_64_dwarf_to_unw_regnum_map[opcode - DW_OP_breg0] : 0),
src/.libs/libunwind-dwarf-local.a:
(((operand1) < 17) ? _ULx86_64_dwarf_to_unw_regnum_map[operand1] : 0),
&tmp1)) < 0)
src/.libs/libunwind-dwarf-local.a:          *valp = (((opcode -
DW_OP_reg0) < 17) ? _ULx86_64_dwarf_to_unw_regnum_map[opcode -
DW_OP_reg0] : 0);
src/.libs/libunwind-dwarf-local.a:          *valp = (((operand1) < 17) ?
_ULx86_64_dwarf_to_unw_regnum_map[operand1] : 0);
src/.libs/libunwind-dwarf-local.a:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17];
src/.libs/libunwind-dwarf-local.a:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17];
src/.libs/libunwind-dwarf-local.a:    *locp = (((dwarf_loc_t) { .val =
((unw_word_t) _ULx86_64_r_uc_addr(dwarf_get_uc(c), ((((val) < 17) ?
_ULx86_64_dwarf_to_unw_regnum_map[val] : 0)))), .type = (0) }));
src/.libs/libunwind-dwarf-local.a:          regnum = (((rs->reg[17].val)
< 17) ? _ULx86_64_dwarf_to_unw_regnum_map[rs->reg[17].val] : 0);
src/.libs/libunwind-dwarf-local.a:          c->loc[i] = (((dwarf_loc_t)
{ .val = ((unw_word_t) _ULx86_64_r_uc_addr(dwarf_get_uc(c),
((((rs->reg[i].val) < 17) ?
_ULx86_64_dwarf_to_unw_regnum_map[rs->reg[i].val] : 0)))), .type = (0) }));
src/.libs/libunwind-dwarf-local.a:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17];
src/.libs/libunwind-dwarf-local.a:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[17];
src/.libs/libunwind-dwarf-local.a:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[33];
src/x86_64/Lglobal.o:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[33];
src/x86_64/Lglobal.o:__attribute__((visibility ("hidden"))) const
uint8_t _ULx86_64_dwarf_to_unw_regnum_map[33] =
src/x86_64/.libs/Lglobal.o:extern const uint8_t
_ULx86_64_dwarf_to_unw_regnum_map[33];
src/x86_64/.libs/Lglobal.o:__attribute__((visibility ("hidden"))) const
uint8_t _ULx86_64_dwarf_to_unw_regnum_map[33] =

Greetings
  Dilian

On 07/06/2015 05:51 PM, Arun Sharma wrote:
On Mon, Jul 6, 2015 at 2:52 AM, Dilyan Palauzov
<address@hidden> wrote:

../include/dwarf_i.h:20:22: warning: type of
'_ULx86_64_dwarf_to_unw_regnum_map' does not match original declaration
  extern const uint8_t dwarf_to_unw_regnum_map[DWARF_REGNUM_MAP_LENGTH];
                       ^
../include/dwarf_i.h:20:22: warning: type of
'_ULx86_64_dwarf_to_unw_regnum_map' does not match original declaration
x86_64/Gglobal.c:37:22: note: previously declared here
  HIDDEN const uint8_t dwarf_to_unw_regnum_map[DWARF_NUM_PRESERVED_REGS] =
                       ^

http://git.savannah.gnu.org/gitweb/?p=libunwind.git;a=blob;f=include/tdep-x86_64/dwarf-config.h;h=ff77808e0694646ecb8b97006d00db79f3b35cb4;hb=HEAD#l41

#define DWARF_REGNUM_MAP_LENGTH         DWARF_NUM_PRESERVED_REGS

On x86_64, they should be identical. Could you look at the output of
the preprocessor to see if another definition from somewhere else is
sneaking in?

  -Arun






reply via email to

[Prev in Thread] Current Thread [Next in Thread]