mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-19 13:11:14 +00:00
scripts/sortextable: support objects with more than 64K sections.
Building with a large config and -ffunction-sections results in a large number of sections and sortextable needs to be able to handle that. Implement support for > 64K sections as modpost does. Signed-off-by: Jamie Iles <jamie.iles@oracle.com> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Michal Marek <mmarek@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
a2529ad9e5
commit
59c36455d0
2 changed files with 47 additions and 3 deletions
|
@ -152,6 +152,30 @@ static void (*w2)(uint16_t, uint16_t *);
|
|||
|
||||
typedef void (*table_sort_t)(char *, int);
|
||||
|
||||
/*
|
||||
* Move reserved section indices SHN_LORESERVE..SHN_HIRESERVE out of
|
||||
* the way to -256..-1, to avoid conflicting with real section
|
||||
* indices.
|
||||
*/
|
||||
#define SPECIAL(i) ((i) - (SHN_HIRESERVE + 1))
|
||||
|
||||
static inline int is_shndx_special(unsigned int i)
|
||||
{
|
||||
return i != SHN_XINDEX && i >= SHN_LORESERVE && i <= SHN_HIRESERVE;
|
||||
}
|
||||
|
||||
/* Accessor for sym->st_shndx, hides ugliness of "64k sections" */
|
||||
static inline unsigned int get_secindex(unsigned int shndx,
|
||||
unsigned int sym_offs,
|
||||
const Elf32_Word *symtab_shndx_start)
|
||||
{
|
||||
if (is_shndx_special(shndx))
|
||||
return SPECIAL(shndx);
|
||||
if (shndx != SHN_XINDEX)
|
||||
return shndx;
|
||||
return r(&symtab_shndx_start[sym_offs]);
|
||||
}
|
||||
|
||||
/* 32 bit and 64 bit are very similar */
|
||||
#include "sortextable.h"
|
||||
#define SORTEXTABLE_64
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue