Re: [PATCH 1/2] Fix a build warning in scripts/sortextable.h

2013-07-03 Thread Michal Marek
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

2013-07-03 Thread Michal Marek
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

2013-07-03 Thread Daniel Tang
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

2013-07-03 Thread Michal Marek
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

2013-07-03 Thread Daniel Tang
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

2013-07-03 Thread Michal Marek
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

2013-07-03 Thread Michal Marek
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

2013-07-03 Thread Michal Marek
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

2013-07-03 Thread Michal Marek
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

2013-07-03 Thread Daniel Tang
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

2013-07-03 Thread Michal Marek
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

2013-07-03 Thread Daniel Tang
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

2013-07-03 Thread Michal Marek
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

2013-07-03 Thread Michal Marek
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/