bugpoint - manuale di riferimento, opzioni, esempi di comandi


NOME

bugpoint - strumento di riduzione automatica dei casi di test

SINOSSI

bugpoint [options] [input LLVM ll/bc files] [LLVM passes] --args program arguments

DESCRIZIONE

bugpoint restringe l'origine dei problemi negli strumenti LLVM e passa. Può essere utilizzato per eseguire il debug di tre tipi di errori: arresti anomali dell'ottimizzatore, compilazioni errate da parte degli ottimizzatori o generazione di codice nativo errato (inclusi problemi nei compilatori statici e JIT). Ha lo scopo di ridurre i casi di test di grandi dimensioni a piccoli casi utili. Per ulteriori informazioni sulla progettazione e il funzionamento interno di bugpoint, oltre a consigli per l'utilizzo di bugpoint, vedere Strumento bugpoint LLVM: progettazione e utilizzo nella distribuzione LLVM.

OPZIONI

--additional-so library

Carica la libreria dinamica di oggetti condivisi nel programma di test ogni volta che viene eseguita. Questo è utile se stai eseguendo il debug di programmi che dipendono da librerie non LLVM (come le librerie X o curses) per essere eseguiti.

--append-exit-code={true,false}

Aggiungere il codice di uscita dei programmi di test al file di output in modo che una modifica nel codice di uscita venga considerata un errore del test. L'impostazione predefinita è false.

--args program args

Passa tutti gli argomenti specificati dopo --args al programma di test ogni volta che viene eseguito. Nota che se qualcuno degli argomenti del programma inizia con un "-", dovresti usare:

bugpoint [bugpoint args] --args -- [program args]

L'opzione "--" subito dopo l'opzione --args indica a bugpoint di prendere in considerazione tutte le opzioni che iniziano con "- " per far parte dell'opzione --args, non come opzioni per il bugpoint stesso.

--tool-args tool args

Passa tutti gli argomenti specificati dopo --tool-args allo strumento LLVM sottoposto a test (llc, lli e così via) ogni volta che viene eseguito. Dovresti usare questa opzione nel modo seguente:

bugpoint [bugpoint args] --tool-args -- [tool args]

Il "--" subito dopo l'opzione --tool-args indica a bugpoint di prendere in considerazione tutte le opzioni che iniziano con "-" come parte dell'opzione --tool-args, non come opzioni del bugpoint stesso. (Vedi --args, sopra.)

--safe-tool-args tool args

Passa tutti gli argomenti specificati dopo --safe-tool-args allo strumento di esecuzione "safe".

--gcc-tool-args gcc tool args

Passa tutti gli argomenti specificati dopo --gcc-tool-args all'invocazione di gcc.

--opt-args opt args

Passa tutti gli argomenti specificati dopo --opt-args all'invocazione di opt.

--disable-{dce,simplifycfg}

Non eseguire i passaggi specificati per ripulire e ridurre le dimensioni del programma di test. Per impostazione predefinita, bugpoint utilizza questi passaggi internamente quando tenta di ridurre i programmi di test. Se stai cercando di trovare un bug in uno di questi passaggi, bugpoint potrebbe bloccarsi.

--enable-valgrind

Usa valgrind per trovare errori nella fase di ottimizzazione. Ciò consentirà a bugpoint di trovare problemi altrimenti asintomatici causati da una cattiva gestione della memoria.

-find-bugs

Casualizza continuamente i passaggi specificati ed eseguili sul programma di test finché non viene trovato un bug o l'utente elimina il bugpoint.

-help

Stampa un riepilogo delle opzioni della riga di comando.

--input filename

Apri nomefile e reindirizza lo standard input del programma di test, ogni volta che viene eseguito, in modo che provenga da quel file.

--load plugin

Carica l'oggetto dinamico plugin nel bugpoint stesso. Questo oggetto dovrebbe registrare nuovi passaggi di ottimizzazione. Una volta caricato, l'oggetto aggiungerà nuove opzioni della riga di comando per abilitare varie ottimizzazioni. Per visualizzare il nuovo elenco completo delle ottimizzazioni, utilizza insieme le opzioni -help e --load; Per esempio:

bugpoint --load myNewPass.so -help
--mlimit megabytes

Specifica un limite massimo per l'utilizzo della memoria dell'ottimizzazione e del codegen. Impostare su zero per disabilitare il limite.

--output filename

Ogni volta che il programma di test produce un output sul suo flusso di output standard, dovrebbe corrispondere al contenuto di nomefile (l'"output di riferimento"). Se non utilizzi questa opzione, bugpoint tenterà di generare un output di riferimento compilando il programma con il backend "sicuro" ed eseguendolo.

--run-{int,jit,llc,custom}

Ogni volta che il programma di test viene compilato, bugpoint dovrebbe generare il codice per esso utilizzando il generatore di codice specificato. Queste opzioni ti consentono di scegliere rispettivamente l'interprete, il compilatore JIT, il compilatore di codice nativo statico o un comando personalizzato (vedi --exec-command).

--safe-{llc,custom}

Durante il debug di un generatore di codice, bugpoint deve utilizzare il generatore di codice specificato come generatore di codice "sicuro". Questo è un noto generatore di codice usato per generare il "reference output" se non è stato fornito, e per compilare parti del programma che sono escluse dal testcase. Queste opzioni ti consentono di scegliere il compilatore di codice nativo statico o un comando personalizzato (vedi rispettivamente --exec-command). L'interprete e i backend JIT non possono attualmente essere utilizzati come backend "sicuri".

--exec-command command

Questa opzione definisce il comando da utilizzare con le opzioni --run-custom e --safe-custom per eseguire il testcase bitcode. Questo può essere utile per la compilazione incrociata.

--compile-command command

Questa opzione definisce il comando da usare con l'opzione --compile-custom per compilare il testcase bitcode. Il comando dovrebbe terminare con un codice di uscita di errore se il file è "interessante" e dovrebbe terminare con un codice di uscita di successo (cioè 0) altrimenti (è come se si bloccasse su input "interessanti").

Questo può essere utile per testare l'output del compilatore senza eseguire alcun collegamento o eseguire fasi. Per generare un test unitario ridotto, puoi aggiungere le direttive CHECK al testcase e passare il nome di uno script di comando di compilazione eseguibile in questa forma:

#!/bin/sh
llc "$@"
not FileCheck [bugpoint input file].ll < bugpoint-test-program.s

Questo script "fallirà" finché FileCheck avrà esito positivo. Quindi il risultato sarà il bitcode minimo che passa FileCheck.

--safe-path path

Questa opzione definisce il percorso del comando da eseguire con l'opzione --safe-{int,jit,llc,custom}.

--verbose-errors={true,false}

Il comportamento predefinito di bugpoint è stampare "" quando trova un test ridotto che blocca la compilazione. Questo flag stampa l'output del programma in crash su stderr. Questo è utile per assicurarsi che sia lo stesso errore che viene rintracciato e non un errore diverso che causa anche l'arresto anomalo del compilatore. L'impostazione predefinita è false.

STATO DI USCITA

Se bugpoint riesce a trovare un problema, uscirà con 0. Altrimenti, se si verifica un errore, uscirà con un valore diverso da zero.

GUARDA ANCHE

opt(1)

AUTORE

Gestito dal team LLVM (https://llvm.org/).

DIRITTO D'AUTORE

2003-2023, Progetto LLVM