Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
On 3.7.2013 14:57, Michal Marek wrote: > On 3.7.2013 14:37, Daniel Tang wrote: >> Hi, >> >> On 03/07/2013, at 10:28 PM, Michal Marek wrote: >>> >>> >>> What is the type of Elf64_Shdr::sh_offset in OS X's ? In >>> glibc, this is Elf64_Off, which is a typedef name for uint64_t. >> >> Huh, that's weird. Elf64_Off is defined as unsigned long in my elf.h >> which isn't 64 bit on x86_64 pretty sure. > > unsigned long _is_ 64bit on x86_64 Linux (or any 64bit Linux), but it > might not be the case on OS X. But then, the on that platform > should use something that is actually 64bit for Elf64_Off. Hm, according to https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/64bitPorting/transition/transition.html, 64bit OS X uses that same model as Linux, i.e. sizeof(long) == sizeof(void*). So the warning is probably caused by the fact that the typedefs Elf64_Off and uint64_t are not identical (even though the types have the same size). How are these defined on OS X? Thanks, Michal -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
On 3.7.2013 14:37, Daniel Tang wrote: > Hi, > > On 03/07/2013, at 10:28 PM, Michal Marek wrote: >> >> >> What is the type of Elf64_Shdr::sh_offset in OS X's ? In >> glibc, this is Elf64_Off, which is a typedef name for uint64_t. > > Huh, that's weird. Elf64_Off is defined as unsigned long in my elf.h > which isn't 64 bit on x86_64 pretty sure. unsigned long _is_ 64bit on x86_64 Linux (or any 64bit Linux), but it might not be the case on OS X. But then, the on that platform should use something that is actually 64bit for Elf64_Off. > It's a problem on my side then, apologies. If Elf64_Off is really defined as an 32bit integer on OS X, then yes. Michal -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
Hi, On 03/07/2013, at 10:28 PM, Michal Marek wrote: > > > What is the type of Elf64_Shdr::sh_offset in OS X's ? In glibc, > this is Elf64_Off, which is a typedef name for uint64_t. Huh, that's weird. Elf64_Off is defined as unsigned long in my elf.h which isn't 64 bit on x86_64 pretty sure. It's a problem on my side then, apologies. > > Michal Cheers, tangrs-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
On 3.7.2013 14:12, Daniel Tang wrote: >> On 3.7.2013 14:06, Michal Marek wrote: >>> On 9.6.2013 04:33, Daniel Tang wrote: The pointer passed to the _r() macro does not always match the type of the function that it is aliasing and raises several of the following warnings at compile time: warning: passing argument 1 of ‘r8’ from incompatible pointer type >>> >>> In what environment (arch, compiler, glibc) are you seeing this? >>> > > I'm cross compiling the ARM arch with gcc version 4.7.2 on 64 bit OS > X. It should throw that warning on any 64 bit environment (not just > OS X) but I haven't tested it. The cross compilation target should not matter, this is a host program. It does work for me on Linux (openSUSE 12.3 FWIW), with gcc 4.7.2 and glibc 2.17: $ gcc -m64 -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -Itools/include -o scripts/sortextable scripts/sortextable.c; echo $? 0 What is the type of Elf64_Shdr::sh_offset in OS X's ? In glibc, this is Elf64_Off, which is a typedef name for uint64_t. Michal -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
Hi, On 03/07/2013, at 10:07 PM, Michal Marek wrote: > On 3.7.2013 14:06, Michal Marek wrote: >> Added David Daney to CC. > > Second attempt, sorry. > > >> On 9.6.2013 04:33, Daniel Tang wrote: >>> The pointer passed to the _r() macro does not always match the type >>> of the function that it is aliasing and raises several of the following >>> warnings at compile time: >>> >>> warning: passing argument 1 of ‘r8’ from incompatible pointer type >> >> In what environment (arch, compiler, glibc) are you seeing this? >> I'm cross compiling the ARM arch with gcc version 4.7.2 on 64 bit OS X. It should throw that warning on any 64 bit environment (not just OS X) but I haven't tested it. If you want, I can look a little deeper into this. Cheers, tangrs-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
On 3.7.2013 14:06, Michal Marek wrote: > Added David Daney to CC. Second attempt, sorry. > On 9.6.2013 04:33, Daniel Tang wrote: >> The pointer passed to the _r() macro does not always match the type >> of the function that it is aliasing and raises several of the following >> warnings at compile time: >> >> warning: passing argument 1 of ‘r8’ from incompatible pointer type > > In what environment (arch, compiler, glibc) are you seeing this? > > Michal > >> Fixed by casting the pointers to (void *) so they work with both the >> 32bit and 64bit code. >> >> Signed-off-by: Daniel Tang >> --- >> scripts/sortextable.h | 29 +++-- >> 1 file changed, 15 insertions(+), 14 deletions(-) >> >> diff --git a/scripts/sortextable.h b/scripts/sortextable.h >> index f5eb43d..0a38fbd 100644 >> --- a/scripts/sortextable.h >> +++ b/scripts/sortextable.h >> @@ -110,9 +110,9 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, >> table_sort_t custom_sort) >> int i; >> int idx; >> >> -shdr = (Elf_Shdr *)((char *)ehdr + _r(>e_shoff)); >> +shdr = (Elf_Shdr *)((char *)ehdr + _r((void *)>e_shoff)); >> shstrtab_sec = shdr + r2(>e_shstrndx); >> -secstrtab = (const char *)ehdr + _r(_sec->sh_offset); >> +secstrtab = (const char *)ehdr + _r((void *)_sec->sh_offset); >> for (i = 0; i < r2(>e_shnum); i++) { >> idx = r([i].sh_name); >> if (strcmp(secstrtab + idx, "__ex_table") == 0) { >> @@ -122,8 +122,8 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, >> table_sort_t custom_sort) >> if ((r([i].sh_type) == SHT_REL || >> r([i].sh_type) == SHT_RELA) && >> r([i].sh_info) == extab_index) { >> -relocs = (void *)ehdr + _r([i].sh_offset); >> -relocs_size = _r([i].sh_size); >> +relocs = (void *)ehdr + _r((void *)[i].sh_offset); >> +relocs_size = _r((void *)[i].sh_size); >> } >> if (strcmp(secstrtab + idx, ".symtab") == 0) >> symtab_sec = shdr + i; >> @@ -142,14 +142,14 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, >> table_sort_t custom_sort) >> fprintf(stderr, "no __ex_table in file: %s\n", fname); >> fail_file(); >> } >> -strtab = (const char *)ehdr + _r(_sec->sh_offset); >> +strtab = (const char *)ehdr + _r((void *)_sec->sh_offset); >> >> -extab_image = (void *)ehdr + _r(_sec->sh_offset); >> +extab_image = (void *)ehdr + _r((void *)_sec->sh_offset); >> >> if (custom_sort) { >> -custom_sort(extab_image, _r(_sec->sh_size)); >> +custom_sort(extab_image, _r((void *)_sec->sh_size)); >> } else { >> -int num_entries = _r(_sec->sh_size) / extable_ent_size; >> +int num_entries = _r((void *)_sec->sh_size) / >> extable_ent_size; >> qsort(extab_image, num_entries, >>extable_ent_size, compare_extable); >> } >> @@ -159,12 +159,13 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, >> table_sort_t custom_sort) >> >> /* find main_extable_sort_needed */ >> sort_needed_sym = NULL; >> -for (i = 0; i < _r(_sec->sh_size) / sizeof(Elf_Sym); i++) { >> -sym = (void *)ehdr + _r(_sec->sh_offset); >> +for (i = 0; i < _r((void *)_sec->sh_size) / sizeof(Elf_Sym); i++) >> +{ >> +sym = (void *)ehdr + _r((void *)_sec->sh_offset); >> sym += i; >> if (ELF_ST_TYPE(sym->st_info) != STT_OBJECT) >> continue; >> -idx = r(>st_name); >> +idx = r((void *)>st_name); >> if (strcmp(strtab + idx, "main_extable_sort_needed") == 0) { >> sort_needed_sym = sym; >> break; >> @@ -178,9 +179,9 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, >> table_sort_t custom_sort) >> } >> sort_needed_sec = [r2(_needed_sym->st_shndx)]; >> sort_done_location = (void *)ehdr + >> -_r(_needed_sec->sh_offset) + >> -_r(_needed_sym->st_value) - >> -_r(_needed_sec->sh_addr); >> +_r((void *)_needed_sec->sh_offset) + >> +_r((void *)_needed_sym->st_value) - >> +_r((void *)_needed_sec->sh_addr); >> >> #if 0 >> printf("sort done marker at %lx\n", >> > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
Added David Daney to CC. On 9.6.2013 04:33, Daniel Tang wrote: > The pointer passed to the _r() macro does not always match the type > of the function that it is aliasing and raises several of the following > warnings at compile time: > > warning: passing argument 1 of ‘r8’ from incompatible pointer type In what environment (arch, compiler, glibc) are you seeing this? Michal > Fixed by casting the pointers to (void *) so they work with both the > 32bit and 64bit code. > > Signed-off-by: Daniel Tang > --- > scripts/sortextable.h | 29 +++-- > 1 file changed, 15 insertions(+), 14 deletions(-) > > diff --git a/scripts/sortextable.h b/scripts/sortextable.h > index f5eb43d..0a38fbd 100644 > --- a/scripts/sortextable.h > +++ b/scripts/sortextable.h > @@ -110,9 +110,9 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, > table_sort_t custom_sort) > int i; > int idx; > > - shdr = (Elf_Shdr *)((char *)ehdr + _r(>e_shoff)); > + shdr = (Elf_Shdr *)((char *)ehdr + _r((void *)>e_shoff)); > shstrtab_sec = shdr + r2(>e_shstrndx); > - secstrtab = (const char *)ehdr + _r(_sec->sh_offset); > + secstrtab = (const char *)ehdr + _r((void *)_sec->sh_offset); > for (i = 0; i < r2(>e_shnum); i++) { > idx = r([i].sh_name); > if (strcmp(secstrtab + idx, "__ex_table") == 0) { > @@ -122,8 +122,8 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, > table_sort_t custom_sort) > if ((r([i].sh_type) == SHT_REL || >r([i].sh_type) == SHT_RELA) && > r([i].sh_info) == extab_index) { > - relocs = (void *)ehdr + _r([i].sh_offset); > - relocs_size = _r([i].sh_size); > + relocs = (void *)ehdr + _r((void *)[i].sh_offset); > + relocs_size = _r((void *)[i].sh_size); > } > if (strcmp(secstrtab + idx, ".symtab") == 0) > symtab_sec = shdr + i; > @@ -142,14 +142,14 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, > table_sort_t custom_sort) > fprintf(stderr, "no __ex_table in file: %s\n", fname); > fail_file(); > } > - strtab = (const char *)ehdr + _r(_sec->sh_offset); > + strtab = (const char *)ehdr + _r((void *)_sec->sh_offset); > > - extab_image = (void *)ehdr + _r(_sec->sh_offset); > + extab_image = (void *)ehdr + _r((void *)_sec->sh_offset); > > if (custom_sort) { > - custom_sort(extab_image, _r(_sec->sh_size)); > + custom_sort(extab_image, _r((void *)_sec->sh_size)); > } else { > - int num_entries = _r(_sec->sh_size) / extable_ent_size; > + int num_entries = _r((void *)_sec->sh_size) / > extable_ent_size; > qsort(extab_image, num_entries, > extable_ent_size, compare_extable); > } > @@ -159,12 +159,13 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, > table_sort_t custom_sort) > > /* find main_extable_sort_needed */ > sort_needed_sym = NULL; > - for (i = 0; i < _r(_sec->sh_size) / sizeof(Elf_Sym); i++) { > - sym = (void *)ehdr + _r(_sec->sh_offset); > + for (i = 0; i < _r((void *)_sec->sh_size) / sizeof(Elf_Sym); i++) > + { > + sym = (void *)ehdr + _r((void *)_sec->sh_offset); > sym += i; > if (ELF_ST_TYPE(sym->st_info) != STT_OBJECT) > continue; > - idx = r(>st_name); > + idx = r((void *)>st_name); > if (strcmp(strtab + idx, "main_extable_sort_needed") == 0) { > sort_needed_sym = sym; > break; > @@ -178,9 +179,9 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, > table_sort_t custom_sort) > } > sort_needed_sec = [r2(_needed_sym->st_shndx)]; > sort_done_location = (void *)ehdr + > - _r(_needed_sec->sh_offset) + > - _r(_needed_sym->st_value) - > - _r(_needed_sec->sh_addr); > + _r((void *)_needed_sec->sh_offset) + > + _r((void *)_needed_sym->st_value) - > + _r((void *)_needed_sec->sh_addr); > > #if 0 > printf("sort done marker at %lx\n", > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
Added David Daney to CC. On 9.6.2013 04:33, Daniel Tang wrote: The pointer passed to the _r() macro does not always match the type of the function that it is aliasing and raises several of the following warnings at compile time: warning: passing argument 1 of ‘r8’ from incompatible pointer type In what environment (arch, compiler, glibc) are you seeing this? Michal Fixed by casting the pointers to (void *) so they work with both the 32bit and 64bit code. Signed-off-by: Daniel Tang dt.ta...@gmail.com --- scripts/sortextable.h | 29 +++-- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/scripts/sortextable.h b/scripts/sortextable.h index f5eb43d..0a38fbd 100644 --- a/scripts/sortextable.h +++ b/scripts/sortextable.h @@ -110,9 +110,9 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort) int i; int idx; - shdr = (Elf_Shdr *)((char *)ehdr + _r(ehdr-e_shoff)); + shdr = (Elf_Shdr *)((char *)ehdr + _r((void *)ehdr-e_shoff)); shstrtab_sec = shdr + r2(ehdr-e_shstrndx); - secstrtab = (const char *)ehdr + _r(shstrtab_sec-sh_offset); + secstrtab = (const char *)ehdr + _r((void *)shstrtab_sec-sh_offset); for (i = 0; i r2(ehdr-e_shnum); i++) { idx = r(shdr[i].sh_name); if (strcmp(secstrtab + idx, __ex_table) == 0) { @@ -122,8 +122,8 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort) if ((r(shdr[i].sh_type) == SHT_REL || r(shdr[i].sh_type) == SHT_RELA) r(shdr[i].sh_info) == extab_index) { - relocs = (void *)ehdr + _r(shdr[i].sh_offset); - relocs_size = _r(shdr[i].sh_size); + relocs = (void *)ehdr + _r((void *)shdr[i].sh_offset); + relocs_size = _r((void *)shdr[i].sh_size); } if (strcmp(secstrtab + idx, .symtab) == 0) symtab_sec = shdr + i; @@ -142,14 +142,14 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort) fprintf(stderr, no __ex_table in file: %s\n, fname); fail_file(); } - strtab = (const char *)ehdr + _r(strtab_sec-sh_offset); + strtab = (const char *)ehdr + _r((void *)strtab_sec-sh_offset); - extab_image = (void *)ehdr + _r(extab_sec-sh_offset); + extab_image = (void *)ehdr + _r((void *)extab_sec-sh_offset); if (custom_sort) { - custom_sort(extab_image, _r(extab_sec-sh_size)); + custom_sort(extab_image, _r((void *)extab_sec-sh_size)); } else { - int num_entries = _r(extab_sec-sh_size) / extable_ent_size; + int num_entries = _r((void *)extab_sec-sh_size) / extable_ent_size; qsort(extab_image, num_entries, extable_ent_size, compare_extable); } @@ -159,12 +159,13 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort) /* find main_extable_sort_needed */ sort_needed_sym = NULL; - for (i = 0; i _r(symtab_sec-sh_size) / sizeof(Elf_Sym); i++) { - sym = (void *)ehdr + _r(symtab_sec-sh_offset); + for (i = 0; i _r((void *)symtab_sec-sh_size) / sizeof(Elf_Sym); i++) + { + sym = (void *)ehdr + _r((void *)symtab_sec-sh_offset); sym += i; if (ELF_ST_TYPE(sym-st_info) != STT_OBJECT) continue; - idx = r(sym-st_name); + idx = r((void *)sym-st_name); if (strcmp(strtab + idx, main_extable_sort_needed) == 0) { sort_needed_sym = sym; break; @@ -178,9 +179,9 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort) } sort_needed_sec = shdr[r2(sort_needed_sym-st_shndx)]; sort_done_location = (void *)ehdr + - _r(sort_needed_sec-sh_offset) + - _r(sort_needed_sym-st_value) - - _r(sort_needed_sec-sh_addr); + _r((void *)sort_needed_sec-sh_offset) + + _r((void *)sort_needed_sym-st_value) - + _r((void *)sort_needed_sec-sh_addr); #if 0 printf(sort done marker at %lx\n, -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
On 3.7.2013 14:06, Michal Marek wrote: Added David Daney to CC. Second attempt, sorry. On 9.6.2013 04:33, Daniel Tang wrote: The pointer passed to the _r() macro does not always match the type of the function that it is aliasing and raises several of the following warnings at compile time: warning: passing argument 1 of ‘r8’ from incompatible pointer type In what environment (arch, compiler, glibc) are you seeing this? Michal Fixed by casting the pointers to (void *) so they work with both the 32bit and 64bit code. Signed-off-by: Daniel Tang dt.ta...@gmail.com --- scripts/sortextable.h | 29 +++-- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/scripts/sortextable.h b/scripts/sortextable.h index f5eb43d..0a38fbd 100644 --- a/scripts/sortextable.h +++ b/scripts/sortextable.h @@ -110,9 +110,9 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort) int i; int idx; -shdr = (Elf_Shdr *)((char *)ehdr + _r(ehdr-e_shoff)); +shdr = (Elf_Shdr *)((char *)ehdr + _r((void *)ehdr-e_shoff)); shstrtab_sec = shdr + r2(ehdr-e_shstrndx); -secstrtab = (const char *)ehdr + _r(shstrtab_sec-sh_offset); +secstrtab = (const char *)ehdr + _r((void *)shstrtab_sec-sh_offset); for (i = 0; i r2(ehdr-e_shnum); i++) { idx = r(shdr[i].sh_name); if (strcmp(secstrtab + idx, __ex_table) == 0) { @@ -122,8 +122,8 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort) if ((r(shdr[i].sh_type) == SHT_REL || r(shdr[i].sh_type) == SHT_RELA) r(shdr[i].sh_info) == extab_index) { -relocs = (void *)ehdr + _r(shdr[i].sh_offset); -relocs_size = _r(shdr[i].sh_size); +relocs = (void *)ehdr + _r((void *)shdr[i].sh_offset); +relocs_size = _r((void *)shdr[i].sh_size); } if (strcmp(secstrtab + idx, .symtab) == 0) symtab_sec = shdr + i; @@ -142,14 +142,14 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort) fprintf(stderr, no __ex_table in file: %s\n, fname); fail_file(); } -strtab = (const char *)ehdr + _r(strtab_sec-sh_offset); +strtab = (const char *)ehdr + _r((void *)strtab_sec-sh_offset); -extab_image = (void *)ehdr + _r(extab_sec-sh_offset); +extab_image = (void *)ehdr + _r((void *)extab_sec-sh_offset); if (custom_sort) { -custom_sort(extab_image, _r(extab_sec-sh_size)); +custom_sort(extab_image, _r((void *)extab_sec-sh_size)); } else { -int num_entries = _r(extab_sec-sh_size) / extable_ent_size; +int num_entries = _r((void *)extab_sec-sh_size) / extable_ent_size; qsort(extab_image, num_entries, extable_ent_size, compare_extable); } @@ -159,12 +159,13 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort) /* find main_extable_sort_needed */ sort_needed_sym = NULL; -for (i = 0; i _r(symtab_sec-sh_size) / sizeof(Elf_Sym); i++) { -sym = (void *)ehdr + _r(symtab_sec-sh_offset); +for (i = 0; i _r((void *)symtab_sec-sh_size) / sizeof(Elf_Sym); i++) +{ +sym = (void *)ehdr + _r((void *)symtab_sec-sh_offset); sym += i; if (ELF_ST_TYPE(sym-st_info) != STT_OBJECT) continue; -idx = r(sym-st_name); +idx = r((void *)sym-st_name); if (strcmp(strtab + idx, main_extable_sort_needed) == 0) { sort_needed_sym = sym; break; @@ -178,9 +179,9 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort) } sort_needed_sec = shdr[r2(sort_needed_sym-st_shndx)]; sort_done_location = (void *)ehdr + -_r(sort_needed_sec-sh_offset) + -_r(sort_needed_sym-st_value) - -_r(sort_needed_sec-sh_addr); +_r((void *)sort_needed_sec-sh_offset) + +_r((void *)sort_needed_sym-st_value) - +_r((void *)sort_needed_sec-sh_addr); #if 0 printf(sort done marker at %lx\n, -- To unsubscribe from this list: send the line unsubscribe linux-kbuild in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
Hi, On 03/07/2013, at 10:07 PM, Michal Marek mma...@suse.cz wrote: On 3.7.2013 14:06, Michal Marek wrote: Added David Daney to CC. Second attempt, sorry. On 9.6.2013 04:33, Daniel Tang wrote: The pointer passed to the _r() macro does not always match the type of the function that it is aliasing and raises several of the following warnings at compile time: warning: passing argument 1 of ‘r8’ from incompatible pointer type In what environment (arch, compiler, glibc) are you seeing this? I'm cross compiling the ARM arch with gcc version 4.7.2 on 64 bit OS X. It should throw that warning on any 64 bit environment (not just OS X) but I haven't tested it. If you want, I can look a little deeper into this. Cheers, tangrs-- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
On 3.7.2013 14:12, Daniel Tang wrote: On 3.7.2013 14:06, Michal Marek wrote: On 9.6.2013 04:33, Daniel Tang wrote: The pointer passed to the _r() macro does not always match the type of the function that it is aliasing and raises several of the following warnings at compile time: warning: passing argument 1 of ‘r8’ from incompatible pointer type In what environment (arch, compiler, glibc) are you seeing this? I'm cross compiling the ARM arch with gcc version 4.7.2 on 64 bit OS X. It should throw that warning on any 64 bit environment (not just OS X) but I haven't tested it. The cross compilation target should not matter, this is a host program. It does work for me on Linux (openSUSE 12.3 FWIW), with gcc 4.7.2 and glibc 2.17: $ gcc -m64 -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -Itools/include -o scripts/sortextable scripts/sortextable.c; echo $? 0 What is the type of Elf64_Shdr::sh_offset in OS X's elf.h? In glibc, this is Elf64_Off, which is a typedef name for uint64_t. Michal -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
Hi, On 03/07/2013, at 10:28 PM, Michal Marek mma...@suse.cz wrote: What is the type of Elf64_Shdr::sh_offset in OS X's elf.h? In glibc, this is Elf64_Off, which is a typedef name for uint64_t. Huh, that's weird. Elf64_Off is defined as unsigned long in my elf.h which isn't 64 bit on x86_64 pretty sure. It's a problem on my side then, apologies. Michal Cheers, tangrs-- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
On 3.7.2013 14:37, Daniel Tang wrote: Hi, On 03/07/2013, at 10:28 PM, Michal Marek mma...@suse.cz wrote: What is the type of Elf64_Shdr::sh_offset in OS X's elf.h? In glibc, this is Elf64_Off, which is a typedef name for uint64_t. Huh, that's weird. Elf64_Off is defined as unsigned long in my elf.h which isn't 64 bit on x86_64 pretty sure. unsigned long _is_ 64bit on x86_64 Linux (or any 64bit Linux), but it might not be the case on OS X. But then, the elf.h on that platform should use something that is actually 64bit for Elf64_Off. It's a problem on my side then, apologies. If Elf64_Off is really defined as an 32bit integer on OS X, then yes. Michal -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h
On 3.7.2013 14:57, Michal Marek wrote: On 3.7.2013 14:37, Daniel Tang wrote: Hi, On 03/07/2013, at 10:28 PM, Michal Marek mma...@suse.cz wrote: What is the type of Elf64_Shdr::sh_offset in OS X's elf.h? In glibc, this is Elf64_Off, which is a typedef name for uint64_t. Huh, that's weird. Elf64_Off is defined as unsigned long in my elf.h which isn't 64 bit on x86_64 pretty sure. unsigned long _is_ 64bit on x86_64 Linux (or any 64bit Linux), but it might not be the case on OS X. But then, the elf.h on that platform should use something that is actually 64bit for Elf64_Off. Hm, according to https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/64bitPorting/transition/transition.html, 64bit OS X uses that same model as Linux, i.e. sizeof(long) == sizeof(void*). So the warning is probably caused by the fact that the typedefs Elf64_Off and uint64_t are not identical (even though the types have the same size). How are these defined on OS X? Thanks, Michal -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/