[Gelistirici] [PATCH] RPATH stripping
ertugrulerata
ertugrulerata at gmail.com
5 Eki 2007 Cum 16:43:24 EEST
On Friday 05 October 2007 16:38:12 S.Çağlar Onur wrote:
> Selamlar;
>
> Sadece benim sistemimde içinde RPATH barındıran
>
> caglar at zangetsu ~ $ cat rpath | wc -l
> 474
>
> executable dosya var, bunlara shared objeler dahil değil. Farm ise şimdi
> analiz için tüm listeyi çıkartmak ile meşgul.
>
> RPATH (bilmeyenler için özetle RPATH build işlemi sırasında kütüphanelerin
> yollarının binary dosya içine hardcode edilmesi işi, bu aynı zamanda bir
> güvenlik problemi de) build işlemi sırasında --disable-rpath gibi bir
> argüman ile disable edilebileceği gibi bazı paketler özel yamada istiyor
> olabilir durumdalar.
>
> Bu kadar paketi yamalamak v.s yapmak yerine strip işinden çok da farklı
> olmayan bu iş için chrpath isimli uygulamayı depoya alıp, PiSi bağımlılığı
> yapıp aşağıdaki yamayı öneriyorum. Fikir/öneri/itiraz?
>
> Index: util.py
> ===================================================================
> --- util.py (revision 15652)
> +++ util.py (working copy)
> @@ -520,6 +520,12 @@
> if ret:
> ctx.ui.warning(_("strip command failed for file '%s'!") % f)
>
> + def run_chrpath(f):
> + p = os.popen("chrpath -d %s" %(flags, f))
> + ret = p.close()
> + if ret:
> + ctx.ui.warning(_("chrpath command failed for file '%s'!") % f)
> +
> def save_elf_debug(f, o):
> """copy debug info into file.debug file"""
> p = os.popen("objcopy --only-keep-debug %s %s%s" % (f, o,
> ctx.const.debug_file_suffix))
> @@ -542,6 +548,7 @@
> check_dir(os.path.dirname(outpath))
> save_elf_debug(filepath, outpath)
> run_strip(filepath)
> + run_chrpath(filepath)
> return True
>
> elif "SB shared object" in o:
> @@ -549,6 +556,7 @@
> check_dir(os.path.dirname(outpath))
> save_elf_debug(filepath, outpath)
> run_strip(filepath, "--strip-unneeded")
> + run_chrpath(filepath)
> # FIXME: warn for TEXTREL
> return True
>
>
>
> Saygılar
kendi şahsıma bu çözüm tektek tüm paketlerle uğraşmaktan güzel göründü
+1
Gelistirici mesaj listesiyle ilgili
daha fazla bilgi