Friday, November 22, 2019

kernel abort

arch/arm/mm/fsr-2level.c , fsr-3level.c

static struct fsr_info fsr_info[] = {
/*
* The following are the standard ARMv3 and ARMv4 aborts.  ARMv5
* defines these to be "precise" aborts.
*/
{ do_bad, SIGSEGV, 0, "vector exception"    },
{ do_bad, SIGBUS, BUS_ADRALN, "alignment exception"    },
{ do_bad, SIGKILL, 0, "terminal exception"    },
{ do_bad, SIGBUS, BUS_ADRALN, "alignment exception"    },
{ do_bad, SIGBUS, 0, "external abort on linefetch"    },
{ do_translation_fault, SIGSEGV, SEGV_MAPERR, "section translation fault"    },
{ do_bad, SIGBUS, 0, "external abort on linefetch"    },
{ do_page_fault, SIGSEGV, SEGV_MAPERR, "page translation fault"    },
{ do_bad, SIGBUS, 0, "external abort on non-linefetch"  },
{ do_bad, SIGSEGV, SEGV_ACCERR, "section domain fault"    },
{ do_bad, SIGBUS, 0, "external abort on non-linefetch"  },
{ do_bad, SIGSEGV, SEGV_ACCERR, "page domain fault"    },
{ do_bad, SIGBUS, 0, "external abort on translation"    },
{ do_sect_fault, SIGSEGV, SEGV_ACCERR, "section permission fault"    },
{ do_bad, SIGBUS, 0, "external abort on translation"    },
{ do_page_fault, SIGSEGV, SEGV_ACCERR, "page permission fault"    },
/*
* The following are "imprecise" aborts, which are signalled by bit
* 10 of the FSR, and may not be recoverable.  These are only
* supported if the CPU abort handler supports bit 10.
*/
{ do_bad, SIGBUS,  0, "unknown 16"    },
{ do_bad, SIGBUS,  0, "unknown 17"    },
{ do_bad, SIGBUS,  0, "unknown 18"    },
{ do_bad, SIGBUS,  0, "unknown 19"    },
{ do_bad, SIGBUS,  0, "lock abort"    }, /* xscale */
{ do_bad, SIGBUS,  0, "unknown 21"    },
{ do_bad, SIGBUS,  BUS_OBJERR, "imprecise external abort"    }, /* xscale */
{ do_bad, SIGBUS,  0, "unknown 23"    },
{ do_bad, SIGBUS,  0, "dcache parity error"    }, /* xscale */
{ do_bad, SIGBUS,  0, "unknown 25"    },
{ do_bad, SIGBUS,  0, "unknown 26"    },
{ do_bad, SIGBUS,  0, "unknown 27"    },
{ do_bad, SIGBUS,  0, "unknown 28"    },
{ do_bad, SIGBUS,  0, "unknown 29"    },
{ do_bad, SIGBUS,  0, "unknown 30"    },
{ do_bad, SIGBUS,  0, "unknown 31"    },
};

static struct fsr_info ifsr_info[] = {
{ do_bad, SIGBUS,  0, "unknown 0"    },
{ do_bad, SIGBUS,  0, "unknown 1"    },
{ do_bad, SIGBUS,  0, "debug event"    },
{ do_bad, SIGSEGV, SEGV_ACCERR, "section access flag fault"    },
{ do_bad, SIGBUS,  0, "unknown 4"    },
{ do_translation_fault, SIGSEGV, SEGV_MAPERR, "section translation fault"    },
{ do_bad, SIGSEGV, SEGV_ACCERR, "page access flag fault"    },
{ do_page_fault, SIGSEGV, SEGV_MAPERR, "page translation fault"    },
{ do_bad, SIGBUS, 0, "external abort on non-linefetch"  },
{ do_bad, SIGSEGV, SEGV_ACCERR, "section domain fault"    },
{ do_bad, SIGBUS,  0, "unknown 10"    },
{ do_bad, SIGSEGV, SEGV_ACCERR, "page domain fault"    },
{ do_bad, SIGBUS, 0, "external abort on translation"    },
{ do_sect_fault, SIGSEGV, SEGV_ACCERR, "section permission fault"    },
{ do_bad, SIGBUS, 0, "external abort on translation"    },
{ do_page_fault, SIGSEGV, SEGV_ACCERR, "page permission fault"    },
{ do_bad, SIGBUS,  0, "unknown 16"    },
{ do_bad, SIGBUS,  0, "unknown 17"    },
{ do_bad, SIGBUS,  0, "unknown 18"    },
{ do_bad, SIGBUS,  0, "unknown 19"    },
{ do_bad, SIGBUS,  0, "unknown 20"    },
{ do_bad, SIGBUS,  0, "unknown 21"    },
{ do_bad, SIGBUS,  0, "unknown 22"    },
{ do_bad, SIGBUS,  0, "unknown 23"    },
{ do_bad, SIGBUS,  0, "unknown 24"    },
{ do_bad, SIGBUS,  0, "unknown 25"    },
{ do_bad, SIGBUS,  0, "unknown 26"    },
{ do_bad, SIGBUS,  0, "unknown 27"    },
{ do_bad, SIGBUS,  0, "unknown 28"    },
{ do_bad, SIGBUS,  0, "unknown 29"    },
{ do_bad, SIGBUS,  0, "unknown 30"    },
{ do_bad, SIGBUS,  0, "unknown 31"    },
};

Wednesday, November 20, 2019

How to get different colors in terminal



  • set the LSCOLORS environment variable
  • create an alias for ls so that it shows colors by default
In your ~/.bash_profile add the following:
#export LSCOLORS="EHfxcxdxBxegecabagacad"
export LSCOLORS="exfxcxdxbxegedabagacad"
alias ls='ls -lGH'

alias ls='ls -lGH'        <-----This shows in list format, follow symlinks colorized
The the colors are set by each bit above; the first being foreground and the second being background. The first two characters refer to directories having a bold blue foreground and a light grey background.
However, there's a great online utility to see what each of the colors mean and look like in real time. It will even generate the "code" for you. (I am not affiliated with this at all). It will work in both MacOS/FreeBSD and Linux. Make sure you select the BSD option for macOS.


The order of the attributes are as follows:

1.   directory
2.   symbolic link
3.   socket
4.   pipe
5.   executable
6.   block special
7.   character special
8.   executable with setuid bit set
9.   executable with setgid bit set
10.   directory writable to others, with sticky bit
11.   directory writable to others, without sticky
The color designators are as follows:
a    black
b    red
c    green
d    brown
e    blue
f    magenta
g    cyan
h    light grey
A    bold black, usually shows up as dark grey
B    bold red
C    bold green
D    bold brown, usually shows up as yellow
E    bold blue
F    bold magenta
G    bold cyan
H    bold light grey; looks like bright white
x    default foreground or background