- Document that the *fsize() functions return a size of 1 for Elf
types that don't have a fixed size. - The *fsize() functions should return a size of 1, for variable length types. - Redefine symbol ELF_T_LAST to match the current end of the list. Obtained from: elftoolchain MFC after: 1 month
This commit is contained in:
parent
f0f10541db
commit
fff07a4233
@ -47,9 +47,8 @@ These functions return the size in bytes of the file representation of
|
||||
.Ar count
|
||||
numbers of objects of ELF type
|
||||
.Ar type .
|
||||
Argument
|
||||
.Ar type
|
||||
must be one that has a fixed size file representation.
|
||||
For ELF types that are of variable length, these functions return a
|
||||
size of one byte.
|
||||
.Pp
|
||||
Functions
|
||||
.Fn elf32_fsize
|
||||
@ -83,10 +82,6 @@ had an unknown ELF class.
|
||||
Argument
|
||||
.Ar type
|
||||
contained an illegal value.
|
||||
.It Bq Er ELF_E_ARGUMENT
|
||||
Argument
|
||||
.Ar type
|
||||
denoted an ELF type with variable size.
|
||||
.It Bq Er ELF_E_UNIMPL
|
||||
Support for ELF type
|
||||
.Ar type
|
||||
|
@ -80,7 +80,7 @@ typedef enum {
|
||||
} Elf_Type;
|
||||
|
||||
#define ELF_T_FIRST ELF_T_ADDR
|
||||
#define ELF_T_LAST ELF_T_XWORD
|
||||
#define ELF_T_LAST ELF_T_GNUHASH
|
||||
|
||||
/* Commands */
|
||||
typedef enum {
|
||||
|
@ -42,6 +42,10 @@ _libelf_xlate_shtype(uint32_t sht)
|
||||
return (ELF_T_SYM);
|
||||
case SHT_FINI_ARRAY:
|
||||
return (ELF_T_ADDR);
|
||||
#if __FreeBSD_version >= 800062
|
||||
case SHT_GNU_HASH:
|
||||
return (ELF_T_GNUHASH);
|
||||
#endif
|
||||
case SHT_GROUP:
|
||||
return (ELF_T_WORD);
|
||||
case SHT_HASH:
|
||||
|
@ -48,8 +48,8 @@ define(`BYTE_SIZE', 1)
|
||||
define(`IDENT_SIZE', `EI_NIDENT')
|
||||
|
||||
/* Types that have variable length. */
|
||||
define(`GNUHASH_SIZE', 0)
|
||||
define(`NOTE_SIZE', 0)
|
||||
define(`GNUHASH_SIZE', 1)
|
||||
define(`NOTE_SIZE', 1)
|
||||
|
||||
/* Currently unimplemented types. */
|
||||
define(`MOVEP_SIZE', 0)
|
||||
@ -145,8 +145,7 @@ _libelf_fsize(Elf_Type t, int ec, unsigned int v, size_t c)
|
||||
sz = 0;
|
||||
if (v != EV_CURRENT)
|
||||
LIBELF_SET_ERROR(VERSION, 0);
|
||||
else if ((int) t < ELF_T_FIRST || t > ELF_T_LAST ||
|
||||
t == ELF_T_NOTE || t == ELF_T_GNUHASH)
|
||||
else if ((int) t < ELF_T_FIRST || t > ELF_T_LAST)
|
||||
LIBELF_SET_ERROR(ARGUMENT, 0);
|
||||
else {
|
||||
sz = ec == ELFCLASS64 ? fsize[t].fsz64 : fsize[t].fsz32;
|
||||
|
Loading…
x
Reference in New Issue
Block a user