abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 20:33 | IT novinky

    Společnosti IBM a Red Hat představily Project Lightwell s investicí 5 miliard dolarů. Jedná se o důvěryhodné clearingové centrum pro bezpečnost open source softwaru a zabezpečení dodavatelských řetězců s novým AI modelem a globální skupinou více než 20 000 softwarových inženýrů. Služby centra budou dostupné prostřednictvím komerčních předplatných. Project Lightwell staví na iniciativách jako Anthropic Glasswing nebo OpenAI Trust Access for Cyber.

    Ladislav Hagara | Komentářů: 0
    dnes 18:22 | Nová verze

    Open source 3D herní a simulační engine Open 3D Engine (O3DE) byl vydán v nové verzi 26.05. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 11:44 | IT novinky

    Český stát by v budoucnu mohl provozovat vlastní alternativu ke komunikačním aplikacím typu WhatsApp, Signal, Telegram, Facebook Messenger a podobně. Cílem je zajistit bezpečnou datovou komunikaci pro stát a jeho důležité subjekty, jako jsou bezpečnostní složky, ministerstva a další organizace.

    Ladislav Hagara | Komentářů: 17
    dnes 11:22 | Pozvánky

    Už za týden, ve čtvrtek 4. června, se v Národní technické knihovně v pražských Dejvicích uskuteční další konference věnovaná tématům spojeným s IPv6 - Den IPv6. Program akce a registrační formulář jsou k dispozici na webu akce. Kapacita konference je omezená, proto organizátoři doporučují, aby se vážní zájemci přihlásili včas (k dnešnímu dni zbývá přibližně 30 volných míst). Konferenci Den IPv6 2026 organizují i letos společně sdružení CESNET, CZ.NIC a NIX.CZ.

    VSladek | Komentářů: 1
    dnes 05:22 | IT novinky

    Zařízení Steam Deck OLED bylo znovu naskladněno, ale vlivem rostoucích cen pamětí a úložišť má novou, vyšší cenovku. Steam Deck OLED 512 GB stojí nově 779 EUR (stál 569 EUR) a Steam Deck OLED 1 TB stojí 919 EUR (stál 679 EUR). Samotné zařízení se nijak nezměnilo a nové ceny tedy pouze odráží aktuální náklady na komponenty a další globální logistické výzvy, se kterými se potýká celá branže.

    Ladislav Hagara | Komentářů: 0
    včera 22:22 | IT novinky

    Český telekomunikační úřad zahajuje novou etapu využívání vysokofrekvenčního rádiového spektra v pásmu 26 GHz. Toto pásmo bude od 1. 7. 2026 otevřeno pro provoz moderních bezdrátových sítí, zejména sítí páté generace (5G), pevných bezdrátových přístupových sítí (FWA) a lokálních či průmyslových sítí určených například pro výrobní areály, logistická centra nebo technologické kampusy. Současně s otevřením pásma 26 GHz přistoupil ČTÚ ke zpřístupnění informací o využívání rádiových kmitočtů v tomto pásmu.

    Ladislav Hagara | Komentářů: 7
    včera 22:11 | IT novinky

    Logitech představil myš Signature Comfort Plus M850 L s polstrovanou opěrkou dlaně pro větší pohodlí a sadu s touto myší a klávesnicí s integrovanou opěrkou dlaní Signature Comfort Plus Combo MK880.

    Ladislav Hagara | Komentářů: 0
    včera 16:33 | IT novinky

    Gaël Duval se rozepsal o novinkách a plánech Murena a /e/OS. Počet uživatelů telefonů Murena a mobilního operačního systému /e/OS bez aplikací a služeb od Googlu se blíží 100 000. Ambicí je, aby se /e/OS stal třetí mobilní platformou v Evropě i na světě, s potenciálem dostat se i na PC. Blíží se vydání nové verze 4 s funkcemi zálohování a obnova, import e-mailů z Gmailu a rozpoznávání hlasu. Murena Workspace přinese videohovory, elektronický podpis a správu zařízení (MDM).

    Ladislav Hagara | Komentářů: 4
    včera 15:22 | Komunita

    Dnes a zítra probíhá Ubuntu Summit 26.04. Na programu je řada zajímavých přednášek. Sledovat je lze na YouTube. Úvodní slovo měli Mark Shuttleworth a Jon Seager.

    Ladislav Hagara | Komentářů: 1
    včera 05:00 | Nová verze

    Lazygit byl vydán ve verzi 0.62.0. Jedná se o TUI (Text User Interface) nadstavbu nad gitem.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (12%)
     (8%)
     (2%)
     (14%)
     (31%)
     (4%)
     (6%)
     (3%)
     (16%)
     (26%)
    Celkem 1744 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník
    Štítky: není přiřazen žádný štítek


    Vložit další komentář
    8.6.2017 23:48 Sten
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Nepůsobí -fdata-sections a -ffunction-sections naopak zvětšení binárky, když má každá funkce svou sekci, která je uvedena ve výsledkem souboru, nebo ty sekce linker nakonec spojí do jedné?
    limit_false avatar 9.6.2017 00:28 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Ze zkušenosti ne. Když se na ty symboly dívám, tak akorát vyžadují zarování na 32-bit hranici, ale to potřebovali i předtím. Ten trik se sekcemi jen jenom hack na linker.

    Zřejmě každý typ sekce má jiný alignment. Tyhle .text.symbol se mi zarovnávají na 4 bajty, .text sekce celá na 16 bajtů. Aktuální objdump dokonce ukazuje i "fill" (nepoužité bajty kvůli zarovnání).

    Zřejmě víc by bylo vidět z linker scriptu.
    When people want prime order group, give them prime order group.
    limit_false avatar 9.6.2017 01:16 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Manuál gcc má taky zmínku o zvětšení object fajlu, ale když to zkouším, tak mi to vychází opačně - zmenší se.

    V mém případě (kvůli kterému jsem tohle řešil) jenom ty dva flagy ořezali z cca 35 MB ARM binárky asi 2.5 MB.

    S -Wl,-verbose lze vypsat aktuální linker script, ale zatím jsem z toho nevyčetl podstatní rozdíl.
    When people want prime order group, give them prime order group.
    9.6.2017 01:37 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Zkoušels i -fwhole-program a zda nějak zmenší binárku?
    limit_false avatar 9.6.2017 12:13 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Vyzkoušel jsem to, ale nemá to žádný efekt.
    When people want prime order group, give them prime order group.
    9.6.2017 15:46 iptriz | skóre: 1 | blog: twktms
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Výborně, něco takového jsem před pár dny řešil (jen s řádově menší binárkou), akorát by to chtělo ještě ten kumulativní výpočet velikosti symbolů, no snad mi to moc nepotrvá. Kdyby se mezitím někomu nelíbil sed/awk, tohle se tváří funkčně ekvivalentně...
    objdump -d "$1" | perl -lne 'if(/<([^+]*).*?>(:?)/){if($2){$w=$1}elsif($w ne$1){print"$w $1"}}' | sort -u
    
    9.6.2017 17:49 iptriz | skóre: 1 | blog: twktms
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Tak bohužel se ukázalo, že to moc nefunguje – když jdu grafem od mainu, posbírám jen 1/3 velikosti programu. Ověřil jsem si, že to je problém v objdump, kde minimálně jedna funkce nemá jiný odkaz než sama na sebe. Nějaké nápady, co s tím?
    #!/bin/sh
    objdump -d "$1" | perl -lne 'next unless/<([^+]*).*?>(:?)/;
    	if($2){$w=$1}elsif($w ne$1){print"$w $1"}' | sort -u > deps
    
    nm --synthetic --print-size --size-sort --radix=d "$1" | awk '
    	function collect(name, set,  i) {
    		used[name]++
    		if (set[name]++)
    			return
    		for (i = 0; i < deps[name]; i++)
    			collect(deps[name, i], set)
    	}
    	function run(name,  set, sum, i) {
    		set[name] = sum = 0
    		collect(name, set)
    		for (i in set) sum += sizes[i]
    		print name, sizes[name], sum
    	}
    	{ sizes[$4] = $2 + 0 } END {
    		while ((getline < "deps") > 0) { deps[$1, deps[$1]++] = $2 }
    		for (name in sizes) run(name)
    		for (name in used) if (used[name] < 2) print name > "unreferenced"
    	}' | sort -nk3
    
    9.6.2017 18:00 iptriz | skóre: 1 | blog: twktms
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    000000000041865f <my_funny_callback>:
      41865f:       55                      push   %rbp
    
    [...]
      418739:       be 5f 86 41 00          mov    $0x41865f,%esi
    
    Vypadá to, že to bude chtít mnohem víc Perlu.
    9.6.2017 18:25 iptriz | skóre: 1 | blog: twktms
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Abych z toho udělal nějaký závěr:
    • objdump neresolvuje callbacky předávané argumentem – lze vyřešit
    • objdump neresolvuje callbacky z dat – nelze vyřešit
    Tedy vždy to bude pouze orientační, každopádně velmi rychlé a jednoduché.
    limit_false avatar 10.6.2017 01:18 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Jop, čekal jsem něco podobného. objdump někdy resolvuje parametry předáváné odkazem (původně jsem třeba podezříval pthread_create za skrývání symbolů) a někdy resolvuje callbacky z dat (nevím nakolik je tolerantní na zanořené reference).

    Každopádně mi to přijde jako zajímavý problém, kterého řešení by mohlo zajímat i někoho jiného. Linker (GNU ld) všechny potřebné informace má, otázka zní, jak to z něj dostat?

    Nějaký tip kam se zeptat? Našel jsem binutils mailing-list, ale nevím zda je to vhodný mailinglist (plus nevidím způsob jak se subscribnout).
    When people want prime order group, give them prime order group.
    10.6.2017 03:22 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Co když mám pole callbacků (a generuju adresu přes nějakej index)? O tom snad linker nemůže vědět ne?

    Je nutné se subscribovat? Já když posílám patche do kernelu, tak jen pošlu mail na mailing list z MAINTAINERS. V nejhorším ti přijde mail ať pošleš subscribe majordom botovi. Takže bych jen poslal mail na binutils at sourceware dot org (okopírované z jednoho mailu) a hotovo :-D.
    limit_false avatar 10.6.2017 21:13 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Úplně nerozumím, jaký je problém s polem callbacků. Linker prostě musí vzít všechny symboly, které jsou referencované a doplnit je do binárky buď kopírovaním nebo jako UNDEFINED odkaz.
    When people want prime order group, give them prime order group.
    11.6.2017 00:21 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Jo on ten callback bude vlastně někde přiřazenej a to udělá referenci :-/.
    10.6.2017 03:15 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Jo callbacky jsou zlo!
    10.6.2017 15:56 iptriz | skóre: 1 | blog: twktms
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Víc Perlu vypadá takto:
    objdump -d "$1" | perl -lne '
    	if (/^0*([\da-f]+) <(.+?)>:/) { $a{$1} = $w = $2
    	} elsif (/<([^+]*).*?>/) { print "$w $1" if $w ne $1
    	} elsif (/0x([\da-f]+),/) { push @{$deps{$w}}, $1
    	} END { while (my ($w, $refs) = each %deps) {
    		for (@$refs) { print "$w $a{$_}" if exists $a{$_} }
    	}}' | sort -u > deps
    
    Skóre: main vzrostl z 26.1% na 35.6% velikosti sstripnuté binárky. _start začal být větší než main. Konkrétní program obsahuje callbacky v datech s nemalým podstromem.
    10.6.2017 16:22 iptriz | skóre: 1 | blog: twktms
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Drobnou úpravou se dostáváme k 21.8% → 51.7% sstripnutého release buildu:
    objdump -d "$1" | perl -lne '
    	if (/^0*([\da-f]+) <(.+?)>:/) { $a{$1} = $w = $2; next }
    	print "$w $1" if /<([^+]*).*?>/ && $w ne $1;
    	push @{$deps{$w}}, $1 if /0x([\da-f]+),/;
    	END { while (my ($w, $refs) = each %deps) {
    		for (@$refs) { print "$w $a{$_}" if exists $a{$_} }
    	}}' | sort -u > deps
    
    10.6.2017 17:42 iptriz | skóre: 1 | blog: twktms
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Ještě jde resolvnout pár zbylých odkazů na data a zde asi definitivně končím:
    nm "$1" | perl -lne 'print for /^0*(\S+) . (\S+)/' > addresses
    objdump -d "$1" | perl -lne '
    	if (/<([^+]*).*?>(:?)/) { $w = $1 if $2; print "$w $1" if $w ne $1 }
    	BEGIN { %a = (split " ", `cat addresses`) }
    	print "$w $a{$1}" if /0x([\da-f]+),/ && exists $a{$1}' | sort -u > deps
    
    Další krok je omílaný linker nebo potenciálně DWARF.
    12.6.2017 01:04 iptriz | skóre: 1 | blog: twktms
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Mimovolně jsem ještě došel k tomu, že ty informace jdou vytahat z object souborů, přes objdump -x. Člověk si ze "symbol table" posbírá offsety a velikosti a pak projíždí "relocation records" a zpětně resolvuje. Object soubory jenom už může být trochu problém posbírat, možná přes nějaký falešný kompilátor/linker jak to dělá scan-build analyzátor, ccache a podobné, a pořád to nemusí být triviální (více object files na jedny zdrojáky s různými defines), tak možná počkat na finální link příkaz do binárky a poprat se i s .a soubory. Teoreticky by se to dalo sledovat i přes strace/ptrace místo wrapperů.
    12.6.2017 01:09 iptriz | skóre: 1 | blog: twktms
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Ono to jde vytahat i z toho output.map souboru ze sekce "Linker script and memory map", řádky LOAD s názvy souborů se dají docela snadno vyparsovat. Problém je, když se linkuje víc věcí, pak se ty output.map přepisují.
    limit_false avatar 10.6.2017 03:14 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    Celkem bych se mi hodil nějaký krátký příklad, na kterém se to projevuje. (Plus compile a link flagy).
    When people want prime order group, give them prime order group.
    10.6.2017 03:42 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Analýza ELF binárky - jak ji oholit o přebytečné bajty
    BTW o co že takhle diskuze nakonec skončí u analýzy pomocí spuštění v QEMU :-D.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.