1
0
mirror of https://github.com/upx/upx synced 2025-09-28 19:06:07 +08:00

Added ElfLinker::addLoaderVA().

This commit is contained in:
Markus F.X.J. Oberhumer 2007-02-20 07:36:34 +01:00
parent cfad7c8356
commit bdd0daaf6f
3 changed files with 24 additions and 7 deletions

View File

@ -439,6 +439,23 @@ int ElfLinker::addLoader(const char *sname)
return outputlen;
}
void ElfLinker::addLoader(const char *s, va_list ap)
{
while (s != NULL)
{
addLoader(s);
s = va_arg(ap, const char *);
}
}
void __acc_cdecl_va ElfLinker::addLoaderVA(const char *s, ...)
{
va_list ap;
va_start(ap, s);
addLoader(s, ap);
va_end(ap);
}
int ElfLinker::getSection(const char *sname, int *slen) const
{
const Section *section = findSection(sname);

View File

@ -83,6 +83,12 @@ public:
virtual void init(const void *pdata, int plen);
//virtual void setLoaderAlignOffset(int phase);
virtual int addLoader(const char *sname);
void addLoader(const char *s, va_list ap);
#if 1 && (ACC_CC_GNUC >= 0x040100)
void __acc_cdecl_va addLoaderVA(const char *s, ...) __attribute__((__sentinel__));
#else
void __acc_cdecl_va addLoaderVA(const char *s, ...);
#endif
virtual Section *addSection(const char *sname, const void *sdata, int slen, unsigned p2align);
virtual int getSection(const char *sname, int *slen=NULL) const;
virtual int getSectionSize(const char *sname) const;

View File

@ -1082,14 +1082,8 @@ void Packer::addLoader(C a, C b, C c, C d, C e, C f, C g, C h, C i, C j)
void __acc_cdecl_va Packer::addLoaderVA(const char *s, ...)
{
va_list ap;
const char *t = s;
va_start(ap, s);
while (t != NULL)
{
linker->addLoader(t);
t = va_arg(ap, const char *);
}
linker->addLoader(s, ap);
va_end(ap);
}