Politicians in the Philippines have overwhelmingly approved extending martial law in the south until the end of the year amid a massive offensive to combat a two-month siege.

House of Representatives Speaker Pantaleon Alvarez said senators and House members voted 261-18 in favour of granting President Rodrigo Duterte’s request in a special joint session on Saturday.

The 60-day martial law was to expire late on Saturday.

The military chief of staff, General Eduardo Ano, warned during the session that aside from the uprising by Islamic State group-linked militants in Marawi, extremist groups have plotted similar insurrections in other southern cities.

He said martial law has helped troops stop attacks, including bombings, elsewhere.

Philippine President Rodrigo Duterte arrives to visit troops in Camp Ranao in Marawi city (Malacanang Palace /AP)

Defence Secretary Delfin Lorenzana played down concerns of military abuses, saying no major human rights violations have been reported since Mr Duterte declared martial law.

Some opponents argue government forces could deal with the attack in Marawi, a centre of Islamic faith in the south, without resorting to martial law. Others worry the extension is too long.

Since the Marawi fighting began on May 23, at least 428 militants, 105 soldiers and police, and 45 civilians have been killed. Half a million residents have been displaced.

During the day-long special session of Congress, wounded army officer First Lieutenant Kent Fagyan said troops smashed concrete walls with sledgehammers to advance towards militant positions away from sniper fire.

Troops dealt with booby traps and had to wrest back control of Marawi communities room by room, he said.