update.h 1.96 KB
/*==============================================================================
    Module: update.h
    $Revision: 1.1.1.2 $
    $Date: 2002/10/29 08:07:15 $
    $Author: blythe $
    $Source: /root/leakn64/depot/rf/sw/bbplayer/tools/gcord/com/update.h,v $
==============================================================================*/
#ifndef _UPDATE_H_
#define _UPDATE_H_
#include <libelf.h>

#include "global.h"

Elf_Scn *find_section_by_name(Elf *elf, char *name);
Elf_Scn	*find_section_by_name32(Elf *, char *);
Elf_Scn	*find_section_by_name64(Elf *, char *);

Uint32 *get_textdata_by_addr(Elf *, Uint64);
Uint32 *get_textdata_by_addr32(Elf *, Uint32);
Uint64 *get_textdata_by_addr64(Elf *, Uint64);

void	expand_section(Elf_Scn *, Uint32);
void	expand_section32(Elf_Scn *, Uint32);
void	expand_section64(Elf_Scn *, Uint64);

void    update_elf_header(void);
void	update_elf_header32(void);
void	update_elf_header64(void);

void 	update_dynamic(void);
void	update_dynamic32(void);
void	update_dynamic64(void);

void	update_got(void);
void	update_got32(void);
void	update_got64(void);

void	update_reldyn(void);
void	update_reldyn32(void);
void	update_reldyn64(void);

void	update_dynsym(void);
void	update_dynsym32(void);
void	update_dynsym64(void);

void	update_symtab(void);
void	update_symtab32(void);
void	update_symtab64(void);

void	expand_text(void);
void	expand_text32(void);
void	expand_text64(void);

Elf_Data *find_section_data_by_name(Elf *elf, char *name);

void	move_mdebug(void* mdebug, Uint32 *len, Uint32 *file_offset);

void	update_branch_offset(void);
void	update_rpt(void);
void 	update_compact_rel(void);

void    process_update_events(void);

void	update_got_page(Addr, Uint32, Addr);
void	update_got_offset(Addr, Uint32, Addr);
Addr    got_content_by_gpoffset(int);

Elf64_Ehdr *copy_elf_header_to64(Elf32_Ehdr *ehdr32);
void 	copy_section_header_to64(Elf32_Shdr *shdr32, Elf64_Shdr *shdr64);

#define MAX_COMMON_ALIGNMENT            64*1024

#endif /* ifndef _UPDATE_H_ */